4

我知道如果有两个或多个线程共享一个 X 显示连接,XInitThreads则必须在任何其他 Xlib 调用之前调用。

但是,如果每个线程都有自己的显示器连接并且只在该连接上运行呢?XInitThreads还有必要吗?如果我使用 GLX 扩展,会有什么不同吗?

4

1 回答 1

1

从文档中:

仅当多个线程可能同时使用 Xlib时才需要调用此函数。 如果对 Xlib 函数的所有调用都受到其他访问机制的保护(例如,工具包中的互斥锁或通过显式客户端编程),则不需要 Xlib 线程初始化。建议单线程程序不要调用该函数。

因此,似乎即使线程使用不同的连接,也必须调用 XInitThreads。

我建议您在创建线程之前调用 XInitThread。这样一切都应该没问题。

于 2013-07-06T16:27:22.267 回答