glib线程安全吗?

Sco*_*zer 1 multithreading glib thread-safety

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

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

谢谢!

dra*_*ide 5

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

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

您可能需要查看参考手册的“ 线程”部分