Re: XInitThreads multiple times

2021-08-11 Thread Aaron Plattner

On 8/5/21 8:36 AM, Keith Packard wrote:

Dawid Kowalczyk  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


XInitThreads multiple times

2021-08-06 Thread Chris Sorenson
Yes, that's kind of what it's for! Just make sure to lock (and unlock) the 
display in each thread.


> >
> > 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.
>

Also remember to lock (and unlock) the display in each thread.
 


Re: XInitThreads multiple times

2021-08-05 Thread Keith Packard
Dawid Kowalczyk  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.

-- 
-keith


signature.asc
Description: PGP signature


XInitThreads multiple times

2021-08-05 Thread Dawid Kowalczyk

Hello,

Is it possible to call |XInitThreads| multiple times, for example 20 
times and not worry who calls it first?