【发布时间】:2013-07-02 09:14:04
【问题描述】:
我了解,如果有两个或多个线程共享一个 X 显示连接,则必须在调用任何其他 Xlib 之前调用 XInitThreads。
但是,如果每个线程都有自己的显示器连接并且只在该连接上运行呢? XInitThreads 还需要吗?如果我使用 GLX 扩展程序会有什么不同吗?
【问题讨论】:
标签: multithreading xlib glx
我了解,如果有两个或多个线程共享一个 X 显示连接,则必须在调用任何其他 Xlib 之前调用 XInitThreads。
但是,如果每个线程都有自己的显示器连接并且只在该连接上运行呢? XInitThreads 还需要吗?如果我使用 GLX 扩展程序会有什么不同吗?
【问题讨论】:
标签: multithreading xlib glx
来自文档:
仅当多个线程可能同时使用 Xlib 时才需要调用此函数。如果对 Xlib 函数的所有调用都受到某种其他访问机制的保护(例如,工具包中的互斥锁或通过显式客户端编程),不需要 Xlib 线程初始化。建议单线程程序不要调用该函数。
所以,似乎即使线程使用不同的连接,也必须调用 XInitThreads。
我建议您在创建线程之前调用 XInitThread。这样一切都应该没问题。
【讨论】: