ArrayList和List<>#在C#之间有什么区别?
它只是List<>有类型而ArrayList不是吗?
.Net 之间ConcurrentQueue和之间有什么区别BlockingCollection?
为什么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;
}
}
Run Code Online (Sandbox Code Playgroud) 我在几年前编写的应用程序中有一个有界的阻塞队列.我们只是说实现不是很好,但它是有效的.但是,它存在一些性能问题.看起来.NET 4.0 BlockingCollection<T>是正确的替代品,但我需要确保它实际上是一个队列.也就是说,如果以单一生产者,单一消费者的方式使用,它是否可以保证是严格的FIFO?
文档没有具体说明.该BlockingCollection话题不说(在备注):
BlockingCollection<T>类似于传统的阻塞队列数据结构,除了底层数据存储机制被抽象为一个IProducerConsumerCollection<T>.
但没有任何具体说明将按照添加的顺序删除内容.
有人知道吗?