glib 线程安全吗?

问题描述 投票:0回答:3

我在 glib 文档中找不到任何有关线程安全的信息。 我想这意味着我应该假设它不是线程安全的,但我不确定我应该锁定哪些共享资源。

有人有使用 glib 线程安全的经验吗? 我可以使用什么准则来确保我的 glib 代码是线程安全的?

谢谢!

multithreading thread-safety glib
3个回答
5
投票

其实glib参考手册里充满了关于线程安全的信息:

调用g_thread_init()后,GLib是完全线程安全的(所有 全局数据自动锁定),但个别数据结构 出于性能原因,实例不会自动锁定。所以, 例如,您必须协调对同一 GHashTable 的访问 多线程。该规则的两个值得注意的例外是 GMainLoop 和 GAsyncQueue,它们是线程安全的,不需要进一步 可从多个线程访问应用程序级锁定。

您可能想查看参考手册的线程部分


0
投票

GLib参考手册可以得到以下说法:

GLib 本身内部是完全线程安全的(所有全局数据都会自动锁定),但出于性能原因,单个数据结构实例不会自动锁定。

因此,为了补充之前的答案,您不需要致电

g_thread_init()


0
投票

全局策略很简单:除了数据操作函数之外,所有策略都是线程安全的。在那里读: GLib – 2.0:编写 GLib 应用程序

© www.soinside.com 2019 - 2024. All rights reserved.