据我所知,如果有两个或多个线程共享一个X显示连接,则必须在任何其他Xlib调用之前调用XInitThreads
。
但是如果每个线程都有自己的连接到显示器并且仅在该连接上运行呢? XInitThreads
仍然有必要吗?如果我使用GLX扩展,它会有所不同吗?
答案 0 :(得分:1)
来自文档:
如果多个线程可能同时使用Xlib,则只需要调用此函数。如果对Xlib函数的所有调用都受到其他访问机制的保护(例如,工具箱中的互斥锁)或者通过显式客户端编程),不需要Xlib线程初始化。建议单线程程序不要调用此函数。
因此,似乎即使线程使用不同的连接,也必须调用XInitThreads。
我建议你在创建线程之前调用XInitThread。这样一切都应该没问题。