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
pgp00000.pgp
Description: PGP signature
