Re: g_main_loop and g_async_queue

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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

[Index of Archives]     [Touch Screen Library]     [GIMP Users]     [Gnome]     [KDE]     [Yosemite News]     [Steve's Art]

  Powered by Linux