您的位置:程序门 -> .net技术 -> c#



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


[收藏此页] [打印本页]选择字色:背景色:字体:[][][]


两个线程,一个不断enqueue(object),一个不断dequeue(),结果会造成数据丢失,请教各位有什么好办法没?[已结贴,结贴人:eeeren]
发表于:2007-08-03 10:31:00 楼主
两个线程,一个不断enqueue(object),一个不断dequeue(),结果会造成数据丢失,请教各位有什么好办法没?
发表于:2007-08-03 10:33:011楼 得分:0
要不要自己重新写一个队列对象,实现入队、出对等函数?
发表于:2007-08-03 10:35:062楼 得分:0
enqueue(object)和dequeue()有什么联系没   有什么规律没
发表于:2007-08-03 11:49:473楼 得分:0
这样的,在一个函数中:
      private     void   receivedata()
                {
                          lock   (pqueue)
                          {
                                pqueue.enqueue(planedata);
                          }
                  }
在另外一个函数中:
      private     void   renderdata()
                {
                  while(pqueue.count> 0)
                        {
                                lock   (pqueue)
                                {
                                        planedata   =   (planedatastructer)pqueue.dequeue();
                                }
                          }
                    }

我会出现数据丢失的问题   ,麻烦各位大侠告诉我怎么办啊   ?
发表于:2007-08-03 11:53:394楼 得分:10
应该收完了做验证,验证对了在发。
发表于:2007-08-03 11:54:505楼 得分:10
用mutex
发表于:2007-08-03 12:00:116楼 得分:10
利用互斥对象
发表于:2007-08-03 13:43:097楼 得分:0
看程序貌似不会出现丢数据吧?你把每次入和出的结果都输出来看看
发表于:2007-08-04 15:40:378楼 得分:0
哦   这两段代码分别是在两个线程中执行的   查了一下资料我想用monitor能不能   解决问题
发表于:2007-08-04 16:31:379楼 得分:0
我想知道在高速数据收发过程中   两线程上下文切换会不会来不及啊   一秒钟之内大概要收发150条数据
发表于:2007-08-04 17:11:5710楼 得分:20
同意eeeren   在这里   队列是临界资源(操作系统基本概念),所以需要对不同的线程进行同步。在java中有synchronized关键字,在.net中只能通过加锁等同步方法使对临界资源读取串行化。


快速检索

最新资讯
热门点击