3

请注意,我使用的是 Python,但这可能适用于 glib 中的任何其他绑定。

glib.io_add_watch()我有一个类,它通过和一个回调方法设置多个套接字连接foo()。此外,我有一个glib.idle_add()回调到一个名为bar(). foo()创建或更新可以是任何值(包括无)的元素列表(类成员)。 bar()从上面的列表中删除任何 None 项目——我们已经完成了这些,我们不再关心。实际上,它清理了一切。

glib 是否允许每个线程在任何时候只调用一个回调?

foo()如果我在线程一和线程二中运行这段代码bar(),就会出现竞争条件。我认为一个简单的互斥锁可以解决这个问题,但有没有更有效的方法来做到这一点?

4

1 回答 1

5

通过添加的回调g_io_add_watchg_add_idle在主循环的线程中执行,无论它们是从哪个线程添加的。

于 2012-07-31T09:14:09.070 回答