GTK和Nanomsg的线程友好的主循环



如何编写一个主循环,该循环在等待来自多个来源的消息时阻止?据我了解,编写事件处理循环的首选方法是在等待事件时阻止它。

但是,当消息可能来自多个来源时如何正确处理?

我想编写一个GTK GUI,该GUI对用户输入事件以及通过Nanomsg发送的消息做出了响应。

gtk允许通过调用gtk_main()或以gtk_main_iteration_do (FALSE)的方式来处理其事件。

Nanomsg可以在阻塞或非阻塞模式下接收消息,以及有关消息的民意调查。

是否有可能以某种方式阻止,直到任何源首先具有输入" Unblocks"的输入?IE。是否有使用sleep的替代方案,它仍然对所有事件响应?

您可以在GTK 应用程序中拥有尽可能多的线程(并且您不会被迫使用GMainLoop实例),只要任何修改UI的调用都会发生在主GTK LOOP中。

在此答案中,我提供了一个示例,其中有100个线程更新相同的用户界面。

最后,您可以分叉并使用您在自己的线程中更熟悉的任何内容(是轮询,阻止或其他任何内容),并且只有在需要通知时要小心(即修改UI)。

相关内容

  • 没有找到相关文章

最新更新