我打算在主线程中触发 2 个线程,并且主线程应该等到所有 2 个子线程完成,这就是我的做法。
void *routine(void *arg)
{
sleep(3);
}
int main()
{
for (int i = 0; i < 2; i++) {
pthread_t tid;
pthread_create(&tid, NULL, routine, NULL);
pthread_join(&tid, NULL); //This function will block main thread, right?
}
}
在上面的代码中,pthread_join
确实让主线程等待子线程,但问题是,直到第一个线程完成后才会创建第二个线程。这不是我想要的。
我想要的是,在主线程中立即创建 2 个线程,然后主线程等待它们完成。似乎pthread_join
无法做到这一点,可以吗?
我想,也许通过一个semaphore
我可以完成这项工作,但还有其他方式吗?