信号量与多线程的退出

两者都可以使用while进行等待,当条件比如处理队列或者资源队列为空时,可以直接发送post信号量和unlock thread,break出去。

void do_purify(){ debug_log("我是pufify线程0x%x/n",pthread_self()); while(1){ debug_log("thread 0x%x in do_purify/n",pthread_self()); sem_wait(&waitNonFull); pthread_mutex_lock(&segMutex); if(queue_is_empty(purifyQue)){//直接退出 sem_post(&waitNonEmpty); pthread_mutex_unlock(&segMutex); break; } debug_log("我是pufify线程0x%x, 开始增加purify数据/n",pthread_self()); debug_log("file:%s/n",(char*)queue_peak_head(purifyQue)); queue_push_tail(segQue,queue_pop_head(purifyQue)); sem_post(&waitNonEmpty); pthread_mutex_unlock(&segMutex); } } 

你可能感兴趣的:(thread,多线程,File)