在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