假设我们有两个线程使用下面执行的方法:
while(true){
if(Queue.Count() <= 0){
wait();
}
object anObject = Queue.Dequeue();
}
现在问题发生在 Queue 有一个元素 init,Thread 1 即将执行 Queue.Count 行,Thread 2 about 在 Queue.Dequeue() 上,执行优先级在 Thread 1 上。
当这种情况发生时,线程 1 将抛出异常,因为 Queue.Count() 将返回 1 并尝试从空队列中取出对象。我该如何处理?如果我想安全地出队,最好的解决方案是什么?我应该使用同步还是锁定某些东西?
最好的问候,凯末尔