gpt4 book ai didi

thread-safety - glib 回调和线程安全

转载 作者:行者123 更新时间:2023-12-01 12:51:58 26 4
gpt4 key购买 nike

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

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

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

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

最佳答案

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

关于thread-safety - glib 回调和线程安全,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11736421/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com