2011-12-18 77 views
1

我有一个GtkTextBuffer的GTK +应用程序。它使用几个工作线程执行一些冗长的操作。这些线程可以以文本格式报告其进度。我想显示工作线程如何执行的细节。你能告诉我如何接收来自工作者线程的输入吗?GTK +应用程序:接收来自工作线程的输入

我认为我可以从工作线程发出一个信号“插入文本”,但是在谷歌搜索时找不到相关示例。任何帮助深表感谢。

+0

你不能找到一个例子吗? – ptomato 2011-12-18 20:29:21

+0

如何从工作线程触发信号的示例。我可以这样做吗? – 2011-12-21 15:27:37

+0

与从主线程发出信号相同,即'g_signal_emit()'或'g_signal_emit_by_name()'。在持有GDK锁的情况下,主线程调用信号处理程序。 – ptomato 2011-12-21 20:30:19

回答

0

传统的快速和肮脏:写你的状态更新到链接列表(由一些同步原语保护),让GTK主循环通过定时器轮询它。

1

您可以使用GAsyncQueue在UI和工作线程之间进行消息传递,它是一个非常完整的通信API。

+0

我看了一下API(感谢您的建议)。然而,我不知道如何通过主循环来推动信号。对他们进行管理(通过定时器或空闲处理)效率不高。我只是想知道什么时候发生了一些有趣的事情。这就是为什么我考虑从工作线程发射信号的原因。 – 2011-12-21 15:29:24

相关问题