作者热门文章
- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我打算在主线程中触发 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
我可以完成这项工作,但还有其他方法吗?
最佳答案
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;
}
关于c - 如何让主线程等待所有子线程完成?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11624545/
有人可以向我澄清主线 DHT 规范中的声明吗? Upon inserting the first node into its routing table and when starting up th
我正在尝试使用 USB 小工具驱动程序使嵌入式设备作为 MTP 设备工作。 我知道 Android 从大容量存储设备切换到 MTP 设备已经有一段时间了,并且找到了 source code for M
我是一名优秀的程序员,十分优秀!