gpt4 book ai didi

c# - 当它接收到新元素时,不断循环遍历线程中的列表

转载 作者:太空狗 更新时间:2023-10-30 00:17:39 24 4
gpt4 key购买 nike

我真的不确定如何处理这个问题,但我正在订阅在自定义类中触发的事件,理想情况下我希望将它们排队并在它们进入时先入先出地处理它们。我知道 Queue<T> 和我想我应该用这个?但我的问题是在收到消息时的事件处理程序中,我会简单地将 Enqueue() 发送到那里的队列吗?如果是这样,那么如何在添加新项目时处理队列?

我正在考虑在构造函数中调用一个方法来执行类似(坚持不懈)的操作:

while (true)
{
foreach (var item in myQueue)
{
// process
myQueue.Dequeue();
}
}

肯定有更优雅的方法来做到这一点?这应该有效地命中 myQueue 并迭代,因为它包含元素并执行我想要的操作。性能会怎样?我可以在单独的线程上生成它以避免任何线程阻塞,我真的有时间接受 while (true) !

最佳答案

这是一个典型的生产者/消费者问题。快速网络搜索显示 http://msdn.microsoft.com/en-us/library/yy12yx1f(VS.80,loband).aspx , 恰好涵盖了这一点。

您不想执行 while(true) 循环,因为您的线程将消耗 100% 的 CPU,即使它没有工作,也可能使系统中的其他线程挨饿。

关于c# - 当它接收到新元素时,不断循环遍历线程中的列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/754410/

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