没有合适的资源?快使用搜索试试~ 我知道了~
首页多线程调用DBUS服务注意事项
多线程调用DBUS服务注意事项

多线程调用DBUS服务注意事项 多线程调用DBUS服务注意事项 多线程调用DBUS服务注意事项 多线程调用DBUS服务注意事项
资源详情
资源评论
资源推荐

1.多线程初始化,特别不要忘记调用 dbus_g_thread_init。
g_type_init();
g_thread_init(NULL);
dbus_g_thread_init();
2.确保不同线程使用不同的 DBusConnection。DBUS 提供了函数 dbus_bus_get_private 用于
获取独立的 DBusConnection,但 dbus-glib 并没有提供相应的函数,我们自己可以封装一个。
static inline
DBusGConnection* dbus_g_bus_get_private (DBusBusType type,
GMainContext* main_context,
GError **error)
{
DBusConnection *connection = NULL;
DBusError derror = {0};
g_return_val_if_fail (error == NULL || *error == NULL, NULL);
//XXX:make sure this function is called in main thread by calling dbus_g_bus_get
//_dbus_g_value_types_init ();
dbus_error_init (&derror);
connection = dbus_bus_get_private (type, &derror);
if (connection == NULL)
{
dbus_set_g_error (error, &derror);
dbus_error_free (&derror);
return NULL;
}
/* does nothing if it's already been done */
dbus_connection_setup_with_g_main (connection, main_context);
return DBUS_G_CONNECTION_FROM_CONNECTION (connection);
}
3.确保不同线程调用相同服务时不会使用同一个 DBusProxy。如果使用了单实例,用下列
方式让每个线程有独立的实例。
















安全验证
文档复制为VIP权益,开通VIP直接复制

评论1