如何让主线程等待所有子线程完成?

2024-01-18

我打算在主线程中触发 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(使用前将#替换为@)

如何让主线程等待所有子线程完成? 的相关文章

随机推荐

  • 如何获取 Objective C(Foundation 框架)中命令行工具的可执行路径?

    我正在尝试找出一种方法来识别 Objective C 中命令行工具的可执行路径 因此 如果可执行文件是 Applications Utils MyTool 则该方法将返回 Applications Utils 我正在使用基础框架 称我为纯粹
  • Codeigniter 会话安全

    如何提高会话的安全性 this gt session gt userdata userid 我一直在为我的 ajax 调用而抛弃这个小坏男孩 有些情况我没有 然后我就想 使用 DOM 中的 id 真的安全吗 如果 DOM 被更改以破解用户帐
  • 恢复 Tensorflow 中新模型子集的变量?

    我正在做一个通过 Tensorflow 增强 4 层 DNN 到 5 层 DNN 的示例 我在 TF 中使用保存会话和恢复来制作它 因为 TF 教程中有一个简短的段落 例如 你可能已经训练了一个 4 层的神经网络 现在想要训练一个 5 层的
  • 具有相同函数名的包

    R 中具有相同函数名称的库似乎很烦人 解决以下问题的最简单方法是什么 Attaching package dplyr The following objects are masked from package stats filter la
  • 使用 LIFO 逻辑运行的 MailboxProcessor

    我正在学习 F 代理 MailboxProcessor 我正在处理一个相当非传统的问题 我有一名代理人 dataSource 这是流数据的来源 数据必须由一系列代理进行处理 dataProcessor 我们可以考虑dataProcessor
  • Windows ETW:内核使用者未收到 EventCallback 或 BufferCallback 事件

    我正在尝试监听 ETW 内核事件 第 1 步 致电OpenTrace http msdn microsoft com en us library windows desktop aa364089 28v vs 85 29 aspx 指定Ev
  • 何时使用 .First 以及何时将 .FirstOrDefault 与 LINQ 结合使用?

    我已经四处搜寻 但还没有真正找到关于何时使用的明确答案 First当你想使用时 FirstOrDefault使用 LINQ 您想什么时候使用 First 仅当您想在没有返回结果的情况下捕获异常时 var result List Where
  • calc() 是否适用于 CSS 中图像的背景大小?

    我的问题很简单 calc 用于纯 CSS 中背景图像的背景大小 现在我正在修复响应式移动视图的背景图像 我希望图像保持固定的屏幕比例 但在任何移动屏幕上调整大小 我实现了这段代码 目前不起作用 media max width 767px b
  • 使用 jQuery 收集所有没有特定类的“可见”表单元素的最佳方法?

    我正在尝试在给定表单上重新分配新的选项卡索引 为此 我想排除任何不可见 不可见 的表单元素 并且还排除拥有特定类 offscreen 的任何表单元素 我正在尝试这种方法 但是 它不起作用 并且可能不是最有效的方法 function reas
  • MAMP 中包含的 MySQL 是否不包含配置文件?

    我似乎找不到 my cnf 或 MySQL 附带的其他配置文件MAMP http www mamp info en index html 其中不包括一项吗 MAMP 非 PRO 的 MySQL 服务器将在没有任何 my cnf 文件的情况下
  • PHP 编辑 Microsoft Word 文档 str_replace 和 preg_replace 不起作用

    假设 我有 MSWord 文件 source doc 其下一个内容是 Microsoft Word 文件的内容 例如 我想通过 PHP 打开它 并将单词 Microsoft 替换为 Openoffice 并将结果保存到结果 doc 这是使用
  • 如何将 malloc 返回的指针视为多维数组?

    有没有办法告诉编译器我已经分配了大小为 N M 的内存 并且我想将此指针视为 N M 数组 换句话说 有没有办法写这样的东西 int arr N M int N M malloc N M sizeof int arr x y 123 我知道
  • Java 7 明显的安全变化

    随着最近对 Java 7s 安全检查的更改 我正在更新我们的 Webstart 应用程序 以允许它在没有警告的情况下运行 我们的 webstart 应用程序由许多 jar 文件组成 其中只有少数是我们开发的 我们使用许多第 3 方 jar
  • 从node.js中的模块内调用app.js的函数?

    假设我有以下 app js 显然very简化 var express require express app express createServer include routes require lib routes app some r
  • 如何抓取由 R 渲染的 JavaScript 网站?

    想问下有没有什么好的方法可以抓取下面的网站 基本上我想获取所有产品的名称和价格 然而 价格信息存储在一些 JQuery 脚本中 硒是唯一的解决方案吗 想过用V8 Jsonlite 但好像不太适用 如果你能在 R 中提供一些替代方案 那就太好
  • Ansible playbook 中的动态变量名称?

    我有许多带有名称的列表 这些列表是通过附加创建的ec2 public dns name to seeds 像这样 seeds ec2 50 8 1 43 us west 1 compute amazonaws com 我需要每个主机的配置来
  • 如何在 Vertica 中创建外部过程

    如何在 Vertica 中创建使用带有诸如以下子句的 SQL 的函数 过程FROM WHERE GROUP BY ORDER BY LIMIT etc 维蒂卡的create function语法禁止在语句中使用某些子句expression
  • Excel VBA Array() 函数导致类型不匹配?

    我创建了以下函数来查找文件并在未找到文件时给出错误 Public Function checkFileExistence arrFileNames As String Optional bShowErrMsg As Boolean Fals
  • Python SIGINT 未捕获

    我不明白为什么我的 SIGINT 永远不会被下面的代码捕获 usr bin env python from threading import Thread from time import sleep import signal class
  • 如何让主线程等待所有子线程完成?

    我打算在主线程中触发 2 个线程 并且主线程应该等待所有 2 个子线程完成 这就是我的做法 void routine void arg sleep 3 int main for int i 0 i lt 2 i pthread t tid