On Fri, Dec 19, 2003 at 11:47:00AM +1100, Julie Russell wrote:
> Hi Everyone,
> 
> I am programming in c++ and xlib using common c++ threads. I want to sleep a
> thread (which I have initiated as detached). During that process I want to
> recieve events from the xlib event loop and if triggered, interrupt the
> sleeping thread, or if not interrupted, have the thread wake up on it's own
> after 20 seconds. The problem is, while that thread is asleep, for some
> reason, my event loop appears to be blocked. How can I sleep a thread so
> that the loop doesn't block and then interrupt it cleanly. Why does the xlib
> event loop appear to be blocked during this process.

I can think of how I would do this in Win32 There is a API function
called PeekMessage() which "peeks" at the pending message waiting but
does not block. I would use that, but for sleeping the thread, use
WaitOnMultipleObjects().

So, if there is a similar function for xlib which allows just a "peek,"
I would use it instead so that the thread doesn't block there. Then
use the pthread_cond_timeout() function to sleep. A signal to the
conditional object terminates the thread loop then.

I read somewhere that X likes all X-related calls to happen in just one
thread. It could be that when you read the next event, it blocks because
there is other X activity in the other thread? Just a guess, really.

> 
> Thanks in advance,
> Julie.
> 
> 
> 
> _______________________________________________
> vox-tech mailing list
> [EMAIL PROTECTED]
> http://lists.lugod.org/mailman/listinfo/vox-tech

-- 
R. Douglas Barbieri
[EMAIL PROTECTED]
http://www.dooglio.net

GPG Fingerprint : FE6A 6A57 2B95 7594 E534  BFEE 45F1 9E5E F30A 8A27
MIT.edu recv-key: C55B91D4
GPG Public key  : http://www.dooglio.net/dooglio.asc

Attachment: pgp00000.pgp
Description: PGP signature

Reply via email to