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

Re: quetion about gtk_input_add()



Hi,

Thanks for that. But, I still have a few questions.
Logic in the controller thread seems not quite right
to me. I may have several childs, but the g_cond_wait
will return when the first exits. So the harvest may
only reap this first one. Am I wrong? 
Also, I donot quite understand the g_thread_join part.
 
The child has already gone after leave the message to
the controller. So at that point, the controller may
join nothing. Am I right?

The reason why I ask this question is that I try to
avoid updating/redrawing the GUI in a thread context.
I dream that it would be nice if I can register a
callback function to the main loop, which is called
upon a "thread-exit" condition. (Like the idea of
gtk_input_add.) What I can do now is to call
"g_mutex_try_lock"  in an idle function (gtk_idle_add)
to check a mutex that will be unlocked by a controller
when all worker threads exit. It looks not quite nice
though. 

Thanks.

Dan




--- Tristan Van Berkom <vantr@touchtunes.com> wrote:
> You could dedicate a thread to that.
> 
> i.e. (please dont expect precice code or argument
> order... this is
> obviously off the top of my head):

 
> GList *dead_threads = NULL;
> GMutex *killer = g_mutex_new();
> GCond   *kill_cond = g_condition_new();
> /*
> ...
> */
> 
> g_thread_create( ... );
> 
> /*
> ...
> */
> (in a child thread)
> g_mutex_lock(killer);
> dead_threads = g_list_append(dead_threads,
> g_strdup("database_thread"));
> g_condition_signal(... kill_condition ...);
> g_mutex_unlocl(killer);
> exit(0);
> /*
> ...
> */
> (in the "controller" thread)
> g_mutex_lock(killer);
> g_cond_wait( ... killer... kill_condition...);
> g_mutex_unlock(killer);
> 
> list = g_list_first(dead_threads);
> while (list && list->data) {
>     /* */
>     g_print("*** reaping thread %s ***\n",
> list->data);
> 
>     g_thread_join(/* use somthing associated with
> string list->data */); 
> 
>     list = list->next;
> }
> /* free list ofcourse */
> 


=====
----------------------------------------------------------
Have fun!
__________________________________________________________

__________________________________
Do you Yahoo!?
Exclusive Video Premiere - Britney Spears
http://launch.yahoo.com/promos/britneyspears/



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