Друзья, столкнулся с проблемкой когда из главного потока нужно завершить один из порожденных. Рабочая функция порожденного потока следующая:
void* work( void* var ) { while( true ) {
pthread_testcancel();
read_data_from_file();
pthread_testcancel();
sleep( 4 ); } }
В главном потоке делаю следующее
pthread_cancel( thread_id );
pthread_join();
... и не как не могу дождаться завершения дочернего потока. При исследовании стека в gdb, видно что дочерний поток так и не вышел из sleep. Кто-нибудь знает, в чет тут может быть дело?