pthread启动函数中的return()与pthread_exit()

pthread启动函数中的return()与pthread_exit(),第1张

pthread启动函数中的return()与pthread_exit()

(1)在C 代码中,using

return
导致
pthread_exit
取消堆栈堆栈和销毁局部变量,而只能保证调用已注册的取消处理程序
pthread_cancel_push()
。在某些系统上,此机制还将导致调用C


局部变量的析构函数,但是对于可移植代码而言,这是不能保证的—查看平台文档。

此外,在

main()
return
将隐式调用
exit()
,从而终止程序,而
pthread_exit()
只会终止线程,程序将继续运行,直到所有线程终止或某个线程调用
exit()
abort()
或终止程序的另一功能。

(2)使用

return
作品,因为POSIX规范是这样说的。返回的值存储在
pthread_join()
可以检索它的地方。在
pthread_join()
调用之前,不会回收线程使用的资源。

(3)我从不在原始POSIX线程中使用线程的返回值。但是,我倾向于使用更高级别的工具,例如Boost线程库,以及最近使用的C ++
0x线程库,它们提供了在线程之间传递值(例如Future)的替代方法,从而避免了与内存管理相关的问题。暗示。



欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zaji/5006538.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-11-14
下一篇2022-11-14

发表评论

登录后才能评论

评论列表(0条)

    保存