On Mon, 5 Jan 2009 09:56:24 +0000 Chris Vine <chris@xxxxxxxxxxxxxxxxxxxxx> wrote: > On Mon, 5 Jan 2009 07:45:02 -0200 > Cris <ternaryd@xxxxxxxxx> wrote: > > > Is there a way to have the main loop react upon a message becoming > > available from a different thread on an asynchronous queue? > > > > I'm having a main loop which is somewhat time critical, and a thread > > which is dedicated to tasks which can take longer and have often a > > lesser priority. I chose to use threads over forks because complex > > data sets need to be exchanged between the two. Is there some other > > method I could use instead of asynchronous queues? > > g_idle_add(), or g_idle_add_full(), are intended for use for message > passing to the event loop of the main program thread. They are thread > safe. > My problem is with the communication coming from the secondary thread, signaling the primary that it can get a result. How could this be done using the idle function? Also, if the idle function is only called if the normal (time critical events) processing is idle, in this case, it would be called probably almost never, as it can get quite busy. There is a solution to it, using standard unix pipes as I would do using forked processes rather than threads (but with those I would have to encode and decode complex data structures while with threads I can get away using mutexes). With g_io_add_watch I can have the main loop trigger my function whenever the secondary thread has finished a job and sends some random byte. I was wondering however, if there is a more glib-style solution to it. Thanks, -- Chris _______________________________________________ gtk-list mailing list gtk-list@xxxxxxxxx http://mail.gnome.org/mailman/listinfo/gtk-list