据我所知,当你需要用返回值终止一个线程时,pthread_exit()恰好等于返回。当人们可以使用一致的方式,即返回来完成Pthread为什么定义这样一个重复的接口?Pthread:为什么人们会使用pthread_exit?
10
A
回答
9
两个原因,我想起:pthread_exit
允许您从调用堆栈任何深度退出线程。
Must be called on the main thread if the TLS keys for the main thread are to have their free functions called.这里还有:“已经推尚未杀出以相反的顺序被弹出,他们推,然后所有执行取消清理处理程序之后的任何取消清理处理程序已经执行,如果线程具有任何线程特定的数据,适当的析构函数将以未指定的顺序调用......当第一次调用main()的线程之外的线程从启动例程返回时,隐式调用pthread_exit()被用来创建它,函数的返回值作为线程的退出状态。“
3
如果你要调用了pthread_exit复制的接口,那么你也应该叫exit()
复制的界面,因为你可以在任意点退出程序。当您遇到某种您无法继续的错误情况时,您可能需要致电pthread_exit()
。或者,您也可以在线索内找到您要查找的任何值。
至于它是真实存在的,根据documentation:
当比线程以外的线程中的main()首次调用返回从启动程序到了pthread_exit隐式调用()由这是用来创建它。该函数的返回值用作线程的退出状态。
所以,如果你从线程做了return <some pointer>
,或者只是到了最后,pthread_exit()
就会被调用。从main()
退出也是一样,如果你return 0
你实际上打电话给exit(0)
。函数必须存在,否则内核将无法确定线程是否退出。
相关问题
- 1. 为什么我们在使用return时使用pthread_exit()?
- 2. pixel.gif,为什么人们使用它?
- 3. 为什么人们不使用base128?
- 4. 为什么人们使用JSP?
- 5. 为什么人们使用`Module.send(:prepend,...)`?
- 6. 为什么人们会在PHP中使用'$ a = $ b = 2;`?
- 7. pthread启动函数中的return()与pthread_exit()
- 8. 为什么会有人使用!在JavaScript?
- 9. 使用pthread_exit和pthread_join。了pthread_exit不会终止调用函数
- 10. 为什么pthread_exit会抛出省略号捕获的东西?
- 11. 为什么人们不会在通用类中包装DependencyProperties?
- 12. 什么使pthread失效?
- 13. 代码档案?人们使用什么?
- 14. 什么是Autoconf?为什么人们使用它?我应该使用它吗?
- 15. 为什么我们需要“-pthread”标志来编译c文件
- 16. 为什么人们使用评论作为商业逻辑
- 17. 为什么人们不会在iOS5上使用MAC地址而不是UDID?
- 18. JavaFX - 人们会怎么想?
- 19. 内部抽象方法。为什么会有人拥有它们?
- 20. 为什么人们会这样创建数组列表?
- 21. 为什么人们以散列形式保存会话数据?
- 22. 他们为什么叫做“四人帮”?
- 23. 为什么人们在SQL中使用ASC?
- 24. 为什么人们不使用<CFLOGIN>?
- 25. 为什么人们在C++中使用`main()`而不是`int main()`?
- 26. 为什么人们在大多数java库中使用org.proj.subproj
- 27. 为什么人们在ICommands上使用CommandManager.InvalidateRequerySuggested()?
- 28. 为什么我们不得不使用私人?在C + +和Java?
- 29. 为什么人们在C++中如此使用__(双下划线)
- 30. 为什么人们使用setTimeout(“func()”,...)而不是setTimeout(func,...)
不同意。在这两种情况下,pthread_exit仍然可以被return替换。 – 2012-01-05 22:58:50
对于#1,是的,但这样做可能不方便。对于#2,它不能。看到我发布的链接。我最近在真实世界中遇到了这个问题。 – 2012-01-05 23:00:57
@Mengfei:如果你在'pthread_create()'启动的函数中,'pthread_exit()'只能被'return'替换。如果线程在函数调用堆栈中更深一些,那么'return'根本不会做同样的事情。 – 2012-01-06 05:18:58