我打算在主线程中触发 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
确实使主线程等待子线程,但问题是,直到第一个线程完成后才会创建第二个线程。这不是我想要的。
我想要的是,这两个线程立即在主线程中创建,然后主线程等待它们完成。似乎pthread_join
不能成功,可以吗?
我想,也许通过semaphore
我可以完成这项工作,但是还有其他方法吗?
int main()
{
pthread_t tid[2];
for (int i = 0; i < 2; i++) {
pthread_create(&tid[i], NULL, routine, NULL);
}
for (int i = 0; i < 2; i++)
pthread_join(tid[i], NULL);
return 0;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)