gpt4 book ai didi

multithreading - GTK 和 nanomsg 的线程友好主循环

转载 作者:行者123 更新时间:2023-12-04 06:44:22 30 4
gpt4 key购买 nike

如何编写一个在等待来自多个源的消息时阻塞的主循环? As I understand it , 编写事件处理循环的首选方法是让它在等待事件时阻塞。

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

我想编写一个 GTK GUI 来响应用户输入事件和通过 nanomsg 发送的消息。

GTK 允许通过调用 gtk_main() 来处理它的事件或者,以非阻塞方式,使用 gtk_main_iteration_do (FALSE) .

Nanomsg jar receive a message在阻塞或非阻塞模式下,以及 poll for messages .

是否有可能以某种方式阻塞,直到首先有可用输入“解除阻塞”的源? IE。除了使用对所有事件保持响应的 sleep 之外,还有其他选择吗?

最佳答案

只要修改 UI 的任何调用发生在主 GTK+ 循环中,您就可以在 GTK+ 应用程序中拥有任意数量的线程(并且您不会被迫使用 GMainLoop 实例)。

this answer我提供了一个使用 100 个线程更新同一用户界面的示例。

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

关于multithreading - GTK 和 nanomsg 的线程友好主循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30223524/

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