如何编写一个在等待来自多个来源的消息时阻塞的主循环?据我了解,编写事件处理循环的首选方法是在等待事件时让它阻塞。
但是,当消息可能来自多个来源时,如何正确处理阻塞?
我想编写一个 GTK GUI,它既响应用户输入事件又响应通过 nanomsg 发送的消息。
GTK 允许通过调用gtk_main()
或以非阻塞方式使用gtk_main_iteration_do (FALSE)
.
Nanomsg 可以在阻塞或非阻塞模式下接收消息,也可以轮询消息。
是否有可能以某种方式阻止,直到任何一个源首先输入可用的“解除阻止”?即有没有替代使用sleep
which 仍然响应所有事件?