【发布时间】:2022-11-04 12:49:52
【问题描述】:
我正在使用 GTK4 构建一个 GTK 应用程序。我对如何在 GTK 中的线程之间传递一些数据感到困惑。具体来说,我正在详细介绍这个问题。
我有一个服务器和一个客户端模块,客户端根据从服务器接收到的数据显示 UI。 UI 相关操作发生在 GTK 事件循环运行的 OS 主线程上。而与服务器的通信发生在非主线程上。在某些时候,服务器可能会向客户端发送一些更新。更新将在通信线程(即非主线程)上接收。由于目的是根据接收到的信息更新 UI(修改 UI 或创建新窗口),因此信息应以某种方式传递到运行事件循环的 OS 主线程。
在 GTK4 中如何在线程之间传递信息(主线程到非主线程,反之亦然)?
我故意避免使用 g_idle_add / g_idle_timeout,因为它会持续或定期运行该函数。我正在寻找一些支持 GTK 的消息传递机制,而无需构建自己的消息传递系统。
【问题讨论】: