Страница 1 из 1

Матрона, помоги

Добавлено: 06 май 2006, 13:46
Андрей0
Подскажит по поводу 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 :(

Как побороть трабл?

Матрона, на тебя одна надежда!

Добавлено: 06 май 2006, 16:41
Math
Сигнал послан до того как успела создаться нить.