XInitThreads multiple times

Aaron Plattner aplattner at nvidia.com
Wed Aug 11 06:25:50 UTC 2021


On 8/5/21 8:36 AM, Keith Packard wrote:
> Dawid Kowalczyk <niexx13 at gmail.com> writes:
> 
>> Hello,
>>
>> Is it possible to call |XInitThreads| multiple times, for example 20
>> times and not worry who calls it first?
> 
> XInitThreads isn't re-entrant, so you need to ensure that it isn't
> getting invoked by multiple threads in parallel, but it does check to
> see if it has been called before, so it is safe to call multiple times
> in sequence.

Right, it's not thread-safe. From the man page:

DESCRIPTION
        The XInitThreads function initializes Xlib  support
        for  concurrent threads.  This function must be the
        first Xlib function a multi-threaded program calls,
        and **it must complete before any other Xlib call is
        made**.

(emphasis mine). Looking at the code, it looks like that rule includes 
other calls to XInitThreads and not just *other* Xlib functions.

-- Aaron


More information about the xorg mailing list