一直没弄明白Win下面进程和线程的区别,这里记一下,还是看书好啊,可以解决自己的知识死角:
Process 进程:
进程含有内存和资源,内存从理论上可以达到2G,资源包括核心对象(如File Handle,线程),USER资源(对话框和字符串),GDI资源(如Device Context和brushes)。进程就像是一个活页夹,本身并不包含任何操作,只是拥有东西,并提供一个安置内存和线程的地方。或者说,进程就是一大堆对象拥有权的集合。
内存:
每一个进程都关联一部分内存,就好比是活页夹里的活页纸,里面的内容则大体可以分为三种,
Code,程序的可执行部分,为Read-Only,这是CPU唯一允许执行的地方。
Data,是所有变量(不包括函数中的局部变量),可以包含全局变量和静态变量以及Malloc和Free的动态内存。
Stack,调用函数和局部变量的堆栈。每个线程产生时都会配有一个堆栈。
进程内部的内存是其所有线程可用的。
Thread 线程:
进程和内存都没有定义实际的操作,而一旦CPU开始执行程序代码,就有了一个“线程”。一个进程可以有大量的线程来操作同一块代码。一个线程的状态被记录进程的某块内存中,以及CPU的寄存器上。而检测寄存器就能够知道线程在任何时候的状态。
BTW,资源消耗对比:
Win下线程创建<Unix下一个进程创建<Win下进程创建