c#2个线程,一个线程接收数据,全部存到一个大数组里面
另外一个线程从大数据里面取数据存储到数据库
调试时:一般如果接收数据快,只有接收线程,没有存储线程。。如何处理啊
线程:while(true)
{
  {ExeData...}
  Thread.Sleep(100)
}
接收数据函数,和存到数据库函数应该没错,只是后者速度肯定慢于前者

解决方案 »

  1.   


    收线程只管往列表里插入数据
    写线程就管从列表中拿数据

    在这中间弄个QueueCache,就成了。
      

  2.   

    我时这么想得,考虑数据量和效率问题
    起三thread
    NO.one  只管接数据
    NO.two  对接受到的数据做些逻辑的数据处理和合法性的校验
    NO.three 专门做数据库操作。其他NO.two每个段时间取数组A里面取数据(必须保持数据同步性枷锁等机制),然后校验合格后放到 另个一个数组B,NO.three从B中取数据做数据库操作,实现业务逻辑与数据操作的隔离。
      

  3.   

    很简单,用两个ManualResetEvent对象表示队列未满,和队列不空两个状态,两个线程分别调用ManualResetEvent.WaitOne,成功后操作队列,并根据队列中是否有数据用Set/reset重新设置两个ManualResetEvent的状态,