gpt4 book ai didi

c# - ZeroMQ Poll 函数是否在 .NET 上使用了过多的 CPU?

转载 作者:行者123 更新时间:2023-11-30 14:00:43 25 4
gpt4 key购买 nike

我有一个简单的控制台应用程序,它使用 ZeroMQ 来发送和接收消息。在接收部分,我有以下消息泵代码:

   ZMQ.Context _context = new ZMQ.Context(1);

ZMQ.PollItem[] pollItems = new ZMQ.PollItem[0];

while (!_finished)
{
if (pollItems.Length > 0)
context.Poll(pollItems, pollTimeout);
else
Thread.Sleep(1);

if (_receiversChanged)
UpdatePollItems(ref pollItems);
}

(我的想法是我可以在运行时从轮询器中添加和删除项目,因为我需要添加接收者。只要接收者集发生变化,UpdatePollItems 就会简单地创建一个新数组。)

我已尝试将 pollTimeout 值设置为 50 毫秒和 500 毫秒,但应用程序(位于 Console.ReadKey 上的主线程上)仍然使用 100% 的一个核心,即使没有发送任何消息也是如此。我在分析器下运行该应用程序并确认是 ZMQ.Context.Poller 占用了所有 CPU。

其他人有没有看到类似的行为?我正在使用最新的 ZeroMQ C# 绑定(bind)(来自 NuGet 的 clrzmq-x64.2.2.3)。

最佳答案

是的,驱动程序中存在错误。我也是这么打的查看代码,.net 4 版本可能会更好,但您必须重新编译它。我将检查我重写的代码是否可以作为拉取请求重新集成。

关于c# - ZeroMQ Poll 函数是否在 .NET 上使用了过多的 CPU?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10028485/

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