代码改变世界

.NET多线程小记(1):进程、线程、纤程

2009-11-06 14:48  敏捷的水  阅读(1754)  评论(0编辑  收藏  举报

进程

进程代表了操作系统上运行着的一个应用程序。进程拥有自己的程序块,拥有独占的资源和数据,并且可被操作系统来调度。即使同一个应用程序,当被强制多次启动时,也会被安装到不通的进程之中单独运行。

clip_image002

线程

线程有时候也被称为微进程或者轻量级进程,它的概念和进程十分相似,是一个可以调度的单元,并且维护自己的堆栈和上下文环境。线程是附属于进程的,一个进程可以包含一个或者多个线程,并且同一个进程内的多个线程共享一块内存块和资源。一个线程是一个操作系统可调度的基本单元,但同时它的调度受限于包含该线程的进程,也就是说操作系统首先决定下一个执行的进程,进而才会调度该进程内的线程。

线程和进程的区别

线程和进程的最大的区别在于隔离性。每个进程都被单独地隔离,拥有自己的内存块、独占的资源及运行数据,一个进程的崩溃不会影响到其他进程,而进程之间的交互也是相当困难的。和进程不同,同一进程内的说有线程共享资源和内存块,并且一个线程可以访问、结束同一进程内的其它线程。

纤程

线程是微软公司提出的轻量级线程的概念,一个纤程拥有自己的栈和寄存器状态。一个线程可以包含多个纤程,和线程由操作系统调用有所不同的是,线程内纤程的调度完全由程序员自己控制,操作系统的内核完全不会知道纤程的存在。