1399

7 分钟

#C 语言标准库函数 thrd_join

/********************************************* * @brief 等待线程结束 * @param th 要等待的线程 ID * @param[out] res 返回线程的返回值 * @return 是否成功 ********************************************/ int thrd_join(thrd_t th, int* res);

说明

阻塞当前线程,直到目标线程结束,获取该线程的返回值。

这个函数的完成与线程的终止同步。

目标线程的返回值会保存到 res 指向的内存中。

不能等待同一个线程两次,也不能等待一个已经被 thrd_detach 分离的线程。

参数

  • th - 要等待的线程
  • res - 用于保存线程的返回值,可以为 NULL 即不接收返回值

返回值

  • 成功时返回 thrd_success
  • 失败时返回 thrd_error

#示例

#include <stdio.h> #include <threads.h> // 线程入口函数 int func(void* data) { return 10; } int main(void) { // 创建线程 thrd_t th; thrd_create(&th, func, NULL); // 等待线程结束 int ret; thrd_join(th, &ret); printf("线程返回值: %d\n", ret); return 0; }

运行结果:

线程返回值: 10

#推荐阅读

#参考标准

  • C17 standard (ISO/IEC 9899:2018):
    • 7.26.5.6 The thrd_join function (p: 280-281)
  • C11 standard (ISO/IEC 9899:2011):
    • 7.26.5.6 The thrd_join function (p: 384-385)

创建于 2025/8/22

更新于 2025/8/22