On 8/5/21 8:36 AM, Keith Packard wrote:
Dawid Kowalczyk <niex...@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

Reply via email to