问题:
以前使用dbus的接口,都是在不同的进程中使用的,比如:
connection = dbus_g_bus_get (DBUS_BUS_SYSTEM, &error);
多次调用,没有问题。
不过,近日,在同一个进程中加载不同的程序,这些程序都各自
调用了connection = dbus_g_bus_get (DBUS_BUS_SYSTEM, &error);
如果一个程序跑起来后,再运行第二个程序,dbus_g_bus_get()会失败,
把SYSTEM dbus搞死!!!
初步的原因是:线程锁的问题:
在调用dbus函数前调用线程初始化的接口后,
if (!g_thread_supported ()) {
g_thread_init (NULL);
}
dbus_g_thread_init ();
就好了。