2
這是迭代ConcurrentQueue<T>
的安全方法嗎?迭代ConcurrentQueue <T>
while (cq.GetEnumerator().MoveNext())
{
IIndexTask task;
if (cq.TryDequeue(out task))
task.Execute(service);
}
這是迭代ConcurrentQueue<T>
的安全方法嗎?迭代ConcurrentQueue <T>
while (cq.GetEnumerator().MoveNext())
{
IIndexTask task;
if (cq.TryDequeue(out task))
task.Execute(service);
}
只是這樣做,而不是...
IIndexTask task;
while (cq.TryDequeue(out task))
{
task.Execute(service);
}
呼喚出隊多次將有效地經過隊列中的項目,所以沒有理由重複它。 – 2010-10-21 11:55:01
@Brian - 我們將定期出隊,所以需要知道多少次調用出隊。我不認爲伯爵會是線程安全的? – 2010-10-21 11:57:24
但TryDequeue會告訴你操作是否成功。你還需要什麼? – 2010-10-21 11:59:47