Ody*_*dys 3 c# queue thread-safety .net-3.5
我有一个WorkerThread工作在队列中的元素和几个MiningThread创建东西的东西需要由WorkerThread.
总结:一个线程Dequeues和几个Enqueue.
我是否需要使用msdn中提出的同步模式,或者在此特定方案中我是线程安全的?
从msdn一个简单的同步访问模式
Queue myCollection = new Queue();
lock(myCollection.SyncRoot)
{
foreach (object item in myCollection)
{
// Insert your code here.
}
}
Run Code Online (Sandbox Code Playgroud)
是的,你需要同步.
有一个.NET4队列,你不需要同步,称为"ConcurrentQueue":http: //msdn.microsoft.com/en-us/library/dd267265.aspx
但是你必须迁移到.NET4,直到那时,你仍然坚持自己进行同步
更新: 对于您的特定模式,.NET4中甚至还有一个更专业的类,BlockingCollection包含生产者/消费者模式:http: //msdn.microsoft.com/en-us/library/dd267312.aspx
还是.NET4很难...... :)