glib线程安全吗?

时间:2012-04-10 18:56:03

标签: multithreading thread-safety glib

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

有没有人使用glib有线程安全经验?我可以使用哪些指南来确保我的glib代码是线程安全的?

谢谢!

3 个答案:

答案 0 :(得分:3)

实际上,glib参考手册中包含有关线程安全的信息:

  

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

您可能需要查看参考手册的threads section

答案 1 :(得分:0)

全局策略很简单:除数据操作函数外,所有都是线程安全的。请阅读:http://developer.gnome.org/glib/stable/glib-programming.html

答案 2 :(得分:0)

GLib reference manual中可以得到以下语句:

  

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

因此,作为先前答案的补充,您无需致电g_thread_init()