gpt4 book ai didi

.net - .Net中ConcurrentQueue和BlockingCollection有什么区别?

转载 作者:行者123 更新时间:2023-12-03 06:08:08 28 4
gpt4 key购买 nike

.Net 中的 ConcurrentQueueBlockingCollection 之间有什么区别?

为什么BlockingCollection最适合生产者-消费者操作,因为它可以通过ConcurrentQueue完成?我需要改进以下代码中的任何内容吗?

MessageSlotMachineGameStartOrAndStatusUpdate msg;

while (!aCancellationToken.IsCancellationRequested)
{
try
{
this.isStillConsumingMsg = true;
Boolean takeResult = this.msgQueue.TryTake(out msg, this.msgConsumeTimeOut, aCancellationToken);
if (takeResult)
{
if (msg != null)
{
this.ProcessMessage(msg);
}
}
else
{
break;
}
}
catch (OperationCanceledException err)
{
EngineManager.AddExceptionLog(err, "Signal Operation Canceled");
}
catch (Exception err)
{
EngineManager.AddExceptionLog(err, "Signal exception");
}
finally
{
this.isStillConsumingMsg = false;
}
}

最佳答案

BlockingCollection 有一个 Take 方法,如果没有什么可拿的,它会阻止消费者,并等待生产者端提供项目。 ConcurrentQueue 缺少这样的方法 - 如果它为空,消费者将需要处理等待,而生产者将需要提供非空通知。

关于.net - .Net中ConcurrentQueue和BlockingCollection有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10010748/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com