
(1)在C 代码中,usingreturn
导致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)的替代方法,从而避免了与内存管理相关的问题。暗示。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)