gpt4 book ai didi

c - 调用 pthread_exit 时如何从线程例程返回 void *

转载 作者:行者123 更新时间:2023-12-04 04:56:10 26 4
gpt4 key购买 nike

https://computing.llnl.gov/tutorials/pthreads/samples/join.c

请参阅上面链接中的代码。

问题:

  • 线程例程 ( BusyWork ) 应该返回 void *而是以调用 pthread_exit() 结束。 (返回 void)。

  • 为什么这没有被标记为失败或错误?我也没有收到任何警告。

    最佳答案

    缺失的链接,取自 man pthread_create :

    Upon its creation, the thread executes start_routine, with arg as its sole argument. If start_routine returns, the effect is as if there was an implicit call to pthread_exit(), using the return value of start_routine as the exit status.



    所以你有两个选择(选择一个):
  • 您的例程返回值并且不调用 pthread_exit
  • 您将返回值传递给 pthread_exit

  • 至于为什么不标记:因为编译器知道 pthread_exit永远不会回来。这是如何完成的取决于编译器。在 GCC 上,这可以使用 __attribute__((__noreturn__)) 来完成。 .

    关于c - 调用 pthread_exit 时如何从线程例程返回 void *,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16721949/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com