如何将GLIB信号回调附加到某些线程上下文



因此,基本上我正在编码以下步骤,以创建基于DBU的应用程序。1. g_bus_watch_name(要出现特定服务的回调(2. g_signal_connect将附加到服务提供的某些信号。 g_signal_connect(代理," xyz",g_callback(回调(,null(;

我希望"回调"在某些线程上下文下运行。

任何提示都将受到高度赞赏

来自GDBusProxy文档:

可以从多个线程中使用gdbusproxy实例,但请注意 所有信号(例如" G-Signal"," G-Properties改变"one_answers" Notify"(是 在线程的线程默认主上下文中发出的线程 实例是构建的。

因此,请确保您希望发出信号的GMainContext是创建GDBusProxy时的线程默认。典型的模式是在线程函数开始时调用g_main_context_push_thread_default(),然后创建GDBusProxy并将信号连接到它,然后将对象完全保存在该线程中。

有关使用GMainContext推荐模式的更多信息,请参见教程。特别是,它建议每个线程有一个GMainContext(该线程的默认值(,而不要在线程之间移动它们。在受支持的同时,线程之间的移动上下文很慢(由于锁定(,使代码其余部分的控制流和线程的安全性非常困难。

最新更新