问题描述
- linux中主进程与主线程的关系
-
一直很困惑,linux环境下,程序启动时,会有主线程吗?如果有,这个主线程是在什么时候生成的,主进程又是什么时候生成的呢?
谢谢各位大大赐教!
解决方案
主线程和主进程是相对而言的,主函数里面fork了子进程那么主函数就是主进程。类似的,pthread_create了子线程,主函数就是主线程。
解决方案二:
进程启动的时候会有一个主线程,来执行Init初始化,调用_main() 函数等,这个线程就是主线程。
这个主进程概念是类似当它启动了子进程以后,那么父进程就是主进程
解决方案三:
我记得Linux实际上没有线程这个概念,每一个thread实际上就是一个进程。
解决方案四:
实际上所谓线程大体有两种实现方式:
1)kernel根本不知道thread的存在,thread之存在于进程中,可以看作一个process的cpu和stack的快照,thread之间的切换只需要在进程内在用户太完成。
2)kernel知道thread的存在,一个thread也是一个process。但是一组process共享进程空间,比如内存空间。这种实现下thread之间的切换需要又kernel完成。
linux事使用第二种实现方式实现的thread。也就是说,linux里面没有狭义中的thread概念。都是process,但是可以一组process共享资源。有一个leader,
这一组process的id号就是这个leader的id。
时间: 2024-12-31 04:42:14