我正在使用pthread_cond_t來表示子線程執行結束的主線程。由於我沒有將訪問同步到共享資源,我想知道包含pthread_cond_wait的循環會是什麼?下面是我有:使用pthread_cond_t來表示執行結束
pthread_mutex_t mutex;
pthread_cond_t cond;
int main(int argc, char *argv[])
{
pthread_cond_init(&cond, NULL);
cond = PTHREAD_COND_INITIALIZER;
pthread_create(&tid1, NULL, func1, NULL);
pthread_create(&tid2, NULL, func2, NULL);
pthread_mutex_lock(&mutex);
pthread_cond_wait(&cond, &mutex);
pthread_mutex_unlock(&mutex);
//Join the thread that first completes
}
void *func1(void *arg)
{
....
pthread_cond_signal(&cond);
pthread_exit((void *) 1);
}
void *func2(void *arg)
{
....
pthread_cond_signal(&cond);
pthread_exit((void *) 1);
}
會主線程,默認情況下,等到線程1或線程2發送一個信號,或者我們需要某種周圍等待條件循環的?
此外,主線程如何訪問線程的退出狀態,該線程在沒有顯式調用pthread_join的情況下發出信號?或者,有沒有辦法獲得發信號的線程的thread_id,以便主線程可以加入它來檢索其退出狀態?
目前尚不清楚你想要做什麼。你想加入完成的第一個線程嗎? – zch 2014-09-06 22:09:41
@zch是的,我想加入第一個完成執行的線程。 – NewToAndroid 2014-09-06 22:24:37