【问题标题】:Thread termination with pthread_exit followed by return - Strange example使用 pthread_exit 终止线程,然后返回 - 奇怪的例子
【发布时间】:2020-06-30 08:06:33
【问题描述】:

我找到this example;这里两个线程 threadDefault 和 threadCustomized 通过使用 pthread_exit 然后返回来终止。作者为什么要写这两条指令?

【问题讨论】:

标签: c multithreading return pthreads pthread-exit


【解决方案1】:

Mohith Reddy 的回答是正确的,但没有抓住重点。当然 return 语句永远不会执行,因为pthread_exit 没有返回,但它会抑制来自编译器的警告,以防它不知道pthread_exit 没有返回。

【讨论】:

  • 是的,应该就是这样!甚至我记得现在我自己在pthread_exit 之后插入了一个return 以抑制编译器警告。
  • 非常感谢你的回答@R...GitHubSTOPHELPINGICE 你能举个例子来显示你正在谈论的警告吗?
【解决方案2】:

来自pthread_exit() 手册页:

返回值

这个函数不会返回给调用者。

错误

这个函数总是成功的。

注意事项

从除主线程之外的任何线程的启动函数执行返回会导致对pthread_exit() 的隐式调用,使用函数的返回值作为线程的退出状态。

以上都表明pthread_exit();return NULL; 一起调用时是多余的。

【讨论】:

  • 嗨@MohithReddy,奇怪的是,在执行pthread_exit之后,不应执行return,因为pthread_exit终止了线程。
  • @GennaroArguzzi 是的,应该是这样。 return 是否在 pthread_exit() 之后被调用?如果是,您如何确定?有时 IDE 可能没有很好地遵循源代码。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-12-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多