Матрона, помоги
Добавлено: 06 май 2006, 13:46
Подскажит по поводу g_cond_wait
main.c :
...
thread.mutex = g_mutex_new();
thread.cond = g_cond_new();
thread.main_thread = g_thread_create(main_thread,main_window,TRUE,NULL);
thread.stream = NULL;
g_mutex_lock(thread.mutex);
thread.status = STATUS_INIT;
g_cond_signal(thread.cond);
g_mutex_unlock(thread.mutex);
...
а в ните созданой в main.c такой код:
...
while(1){
g_mutex_lock(thread.mutex);
g_print("enter to loop thread...\n");
g_cond_wait(thread.cond,thread.mutex);
if(thread.status == STATUS_INIT){
g_print("enter to init...\n");
...
Так вот фраза "enter to loop thread..." пишется а "enter to init..."
нифига, отсуда следует что g_cond_wait подвисла и не хочет
воспринимать сигнал, посланый ф-ией g_cond_signal
Как побороть трабл?
Матрона, на тебя одна надежда!
main.c :
...
thread.mutex = g_mutex_new();
thread.cond = g_cond_new();
thread.main_thread = g_thread_create(main_thread,main_window,TRUE,NULL);
thread.stream = NULL;
g_mutex_lock(thread.mutex);
thread.status = STATUS_INIT;
g_cond_signal(thread.cond);
g_mutex_unlock(thread.mutex);
...
а в ните созданой в main.c такой код:
...
while(1){
g_mutex_lock(thread.mutex);
g_print("enter to loop thread...\n");
g_cond_wait(thread.cond,thread.mutex);
if(thread.status == STATUS_INIT){
g_print("enter to init...\n");
...
Так вот фраза "enter to loop thread..." пишется а "enter to init..."
нифига, отсуда следует что g_cond_wait подвисла и не хочет
воспринимать сигнал, посланый ф-ией g_cond_signal

Как побороть трабл?
Матрона, на тебя одна надежда!