Linux线程阻塞问题

Linux线程阻塞问题,第1张

pthread_join一般是主线程来调用,用来等待子线程退出,因为是等待,所以是阻塞的,一般主线程会依次join所有它创建的子线程。

pthread_exit一般是子线程调用,用来结束当前线程。

子线程可以通过pthread_exit传递一个返回值,而主线程通过pthread_join获得该返回值,从而判断该子线程的退出是正常还是异常。

用户级实现线程时,内核调度是以进程为单位的,内核并不知道用户级线程的存在,因此某个用户级线程的阻塞即会引起整个进程的阻塞。

内核级线程阻塞时,内核完全可以调度同进程内的其它线程运行,也就是没有阻塞整个线程

不是.

在"任何时候",子线程和主线程都可能抢占到CPU,(任何时候不准确,只是理论上这么说而已,实际上在原子 *** 作时,其它线程无法抢占CPU).所以,是子线程在执行int i时就可能会被抢占.

join是主线程运行那到就一直阻塞在那,直到子线程结束.如果你在子线程函数最后加个return

那么,主线程在阻塞后,会等到子线程的return语句运行后再执行join后的语句.

如果主线程运行到join前,子线程已经结束,那么主线程不会阻塞,


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

原文地址: http://outofmemory.cn/yw/8651253.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-19
下一篇 2023-04-19

发表评论

登录后才能评论

评论列表(0条)

保存