3

我想将 ZeroMQ 套接字添加到 glib 程序中。

遗憾的是,zmq 套接字是不可poll()用的,他们给出了他们的实现,这使旧的poll()func 重载。我怎样才能有效地将它集成到主循环中?我尝试使用他们的 poll ( zmq_poll()) 而不是默认的,但是除了将其设置为global.

定义一个新的GSource工作,但它可以获得高 CPU 使用率(通过设置timeout = 0)或任意轮询超时(例如设置timeout = 100为至少每 100 毫秒轮询一次),这并不是真正有效的,因为存在轮询的可能性。

4

2 回答 2

1

我发现较新的 zmq 库支持该参数,它为您提供了一个您可以使用的 unix 。唯一需要注意的是,您不能只知道您是否可以或从/到它,而是需要使用参数来获取真实状态。ZMQ_FD getsockopt()fdpoll()poll()recv()send()ZMQ_EVENTS getsockopt()fd

它似乎在 glib 中运行良好。

于 2011-07-19T21:20:55.670 回答
1

根据常见问题解答,您可以尝试“另一种方式”的方法。而不是pollzmq 套接字上尝试zmq_poll()常规套接字

查看问题如何将 ØMQ 套接字与普通套接字集成?还是使用 GUI 事件循环?在常见问题解答中。

于 2011-07-15T21:47:01.957 回答