>>>进程与线程
进程是资源分配的基本单位,而线程是调度的基本单位。一个进程内可以有多个线程,但一个线程只能所属一个进程。
其中线程共享所属进程的数据,且自己也拥有自己的一部分数据,具体来讲↓↓↓
进程拥有的资源包括:
进程标识符、内存指针、进程状态、进程优先级、上下文信息、记账信息、IO状态信息(file指针)、程序计数器
在了解线程所共享内容时,一般的标准是:如果某些资源不独享会导致线程运行错误,则该资源就由每个线程独享,而其他资源都由进程里面的所有线程共享
线程共享的数据有:
栈、一组寄存器、线程id、状态、部分段空间(比如代码段和全局数据空间)、程序计数器
>>>多进程与多线程
总的来说就是
多进程创建时开销比较大,通信方式比较复杂(可以用过管道、文件、消息队列进行通信),但是后续维护成本不高。
多线程是利用共享内存的方式进行指令的执行,创建开销比较低,但是维护起来比较麻烦,需要考虑到共享资源的问题,而且不支持分布式运算(本身是调度的最小单位)。