日期:2014-05-20  浏览次数:20818 次

在c#.net中用CQueue队列数据结构,多线程同步的问题? 急!!!
程序的实现功能:
CQueue   queue   =   new   CQueue();   //用队列来作为存储结构

采用一个线程在队列的一段追加数据:
queue.Enqueue( "xxxx ");
采用多个线程同时在获取队列中的数据;
queue.Dequeue();

以上的线程在同时工作的,我如何做到对队列的通过访问处理;如:在获取数据时保证每个获取数据的线程,取到的数据不是在队列中同一位置上的。

多谢!




------解决方案--------------------
使用lock

lock(queue.SyncRoot)
{
// 操作代码
}

或者使用同步包装的实例

Queue queue = Queue.Synchronized(new Queue());

------解决方案--------------------
有Cqueue这个东东吗?是Queue吧。
规范的写法是:
lock (((ICollection)queue).SyncRoot)
{
queue.Enqueue( "xxx ");
}
------解决方案--------------------
也可以适用对象锁。
总之是要做资源保护的。
------解决方案--------------------
mark