主行程啟動 4 個執行緒。現在此時所有 4 個執行緒都將立即開始執行,但我希望所有執行緒都等到所有執行緒的其余部分也處于運行狀態。
我記得使用信號量來跟蹤執行緒數,但無法回憶起它。有沒有什么簡單的方法可以不用忙等待?
void *thread_routine(void *arg)
{
// this thread should wait here till rest of all threads are also ready to run
// do some job here
return NULL;
}
int main(int argc, char *argv[])
{
int i = 0;
pthread_t thid[4];
for (i = 0; i < 4; i ) {
pthread_create(&tid[i], NULL, thread_routine, NULL);
}
for (i = 0; i < 4; i ) {
pthread_join(tid[i], NULL);
}
return 0;
}
uj5u.com熱心網友回復:
您所描述的聽起來像是可以使用pthread_barrier_wait實作的屏障同步。
這是一個使用它的簡單示例(來自 TLPI 書)。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/504216.html
標籤:C 多线程 线程 pthread 连接 pthread-barriers
