pthread_exit一般是子线程调用,用来结束当前线程。
子线程可以通过pthread_exit传递一个返回值,而主线程通过pthread_join获得该返回值,从而判断该子线程的退出是正常还是异常。
用户级实现线程时,内核调度是以进程为单位的,内核并不知道用户级线程的存在,因此某个用户级线程的阻塞即会引起整个进程的阻塞。内核级线程阻塞时,内核完全可以调度同进程内的其它线程运行,也就是没有阻塞整个线程
不是.在"任何时候",子线程和主线程都可能抢占到CPU,(任何时候不准确,只是理论上这么说而已,实际上在原子 *** 作时,其它线程无法抢占CPU).所以,是子线程在执行int i时就可能会被抢占.
join是主线程运行那到就一直阻塞在那,直到子线程结束.如果你在子线程函数最后加个return
那么,主线程在阻塞后,会等到子线程的return语句运行后再执行join后的语句.
如果主线程运行到join前,子线程已经结束,那么主线程不会阻塞,
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)