我从DBus和事件驱动编程开始。我正在尝试创建的服务实际上由三个部分组成,但两个部分实际上是“服务器”。我看到的问题是,我在我的“保持活动”线程中调用time.sleep(X)。线会睡着,但永远不会醒来。我认为GIL不是由GLib主循环发布的。下面是我的线程代码:
class Keepalive(threading
我正在使用dbus (使用GLib C API)执行我的第一步,并且已经在使用glib时遇到了问题。Lib在主循环中服务于dbus数据对于我的应用程序,我确实需要第二个套接字作为TCP-IP服务器。如果两个套接字都是阻塞的,我如何使用它们?该应用程序在嵌入式硬件(linux)上运行,并且资源非常有限,因此不幸的是,多线程不是一种选择。
如果我按原样编译和运行代码,该进程将使用1个线程运行.如果我取消注释注释,然后编译并运行它,它将以2个线程运行。ddd中的第二个线程,我可以看到它正在运行g_main_loop_run。这让我感到困惑:
为什么添加工具栏按钮会创建一个新线程?我认为g_main_loop_run()应该只在一个线程中运行(除非您使用GDK_ the _ENTER/GDK_the_LEAVE宏)。因为我正在运行Gtk:: main ::Run(),在我的主线