线程与进程的爱恨情仇???
- 一:有了进程,为什么还需要线程???
- 二:线程
- 三:线程和进程的区别与联系
- 四:创建线程or创建进程
一:有了进程,为什么还需要线程???
一个服务器需要能够同时给多个客户端提供服务(利用多核心CPU),典型的做法就是:每个客户端连上服务器了,服务器就会创建一个进程,给客户端提供服务,这个客户端断开了,服务器再吧进程给释放掉。
但上面的方法会产生一定的问题,比如:如果一个服务器,频繁的有客户端“来来去去”,服务器也就需要频繁的创建/销毁进程(开销比较大),进而会导致服务器的响应速度变慢.
线程,就是为了解决上述"进程"太重量的问题.
二:线程
线程是进程的一部分,一个进程往往包含多个线程.
严格的说:PCB是用来描述线程的,多个PCB构成一个进程.
三:线程和进程的区别与联系
1:同一个进程不同线程之间,是共用相同的内存资源和文件资源的(不同进程的内存指针和文件描述符表是同一个).
2:每个线程都是在独立的CPU上调度执行.
3:进程是系统资源分配的基本单位
4:线程是系统调度的基本单位
5:状态,上下文,优先级,记账信息,每个线程都有一组自己的属性.
6:pid每个线程不一样.
7:tgid:用一个线程的tgid是相同的(可以通过tgid确定哪些线程是同一个进程).
8:一个跑起来的程序就是一个进程.
9:一个进程包含一个线程或多个线程,就可以通过多线程的方式进程并发编程了.
四:创建线程or创建进程
创建一个进程,可能要包含多个线程,这个过程中,就会涉及到资源分配/资源释放,而资源分配和资源释放是非常繁琐的事情.
创建线程,资源已经在创建进程的时候进行分配了(同一个进程,包含多个线程,这些线程之间是共用资源,只有在创建第一个线程的时候(也就是创建进程的时候),去进行资源申请操作,后序在创建线程,都没有申请资源的过程了)