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]