两个线程,一个不断Enqueue(object),一个不断Dequeue(),结果会造成数据丢失,请教各位有什么好办法没?

解决方案 »

  1.   

    Enqueue(object)和Dequeue()有什么联系没 有什么规律没
      

  2.   

    这样的,在一个函数中:
       private  void ReceiveData()
            {
                 lock (pQueue)
                 {
                    pQueue.Enqueue(PlaneData);
                 }
             }
    在另外一个函数中:
       private  void RenderData()
            {
             while(pQueue.Count>0)
                {
                    lock (pQueue)
                    {
                        PlaneData = (PlaneDataStructer)pQueue.Dequeue();
                    }
                 }
              }我会出现数据丢失的问题 ,麻烦各位大侠告诉我怎么办啊 ?
      

  3.   

    哦 这两段代码分别是在两个线程中执行的 查了一下资料我想用Monitor能不能 解决问题
      

  4.   

    同意eeeren 在这里 队列是临界资源(操作系统基本概念),所以需要对不同的线程进行同步。在java中有synchronized关键字,在.net中只能通过加锁等同步方法使对临界资源读取串行化。