什么是纤程
发布:cnwang | 发布时间: 2010年6月4日纤程是Windows操作系统中独有的概念,但对于.NET来说线程的概念十分重要,因为在有些情况下.NET的线程实际在操作系统层面对应的就是纤程。读者需要至少了解纤程的概念,并且知道它和线程的区别。
♦所涉及的知识点
►纤程的概念
►纤程和线程的区别
►纤程在.NET中的作用
♦分析问题
1.纤程的概念
纤程是微软公司在自己的操作系统上提出的一个概念,当初的目的是用来方便地移植其他操作系统上的应用程序。一个线程可以拥有0个或者多个纤程,一个纤程可以视为一个轻量级的线程,它拥有自己的栈和上下文状态,但是纤程的调度是由程序员编码控制的,当一个纤程所在线程得到运行时,程序员需要手动地决定运行哪一个纤程。事实上,Windows操作系统内核是完全不了解纤程的存在的,它只负责调度所有的线程,而纤程之所以成为操作系统的概念,是因为微软公司的操作系统提供了关于线程操作的Win32函数,能够方便地帮助程序员进行线程编程。
2.纤程和线程的区别
一个线程包含多个纤程,纤程和线程的最大区别在于,线程的调度受操作系统的管理,程序员没有必要也没有办法进行完全干涉。在Windows这样的非实时操作系统中,一个线程何时被运行完全无法预知。但纤程却完全受控于程序本身,可以说纤程允许程序员对多任务进行完全自定义的调度和控制,可见纤程带给程序非常大的灵活性,当然,纤程程序的编写要求程序员有非常深厚的操作系统知识。下图展示了进程、线程、纤程的部分关系。
3.纤程在.NET中的地位
.NET运行框架没有做出关于线程真实性的保证,也就是说,程序员在.NET程序中新建的线程,并不一定会在操作系统层面上产生一个真正的线程。在.NET框架寄宿的情况下,一个程序中的线程很有可能对应某个纤程。总之微软公司在线程的操作上为将来的产品留有了余地,程序员应该清楚地意识到这一点,从而避免错误地把.NET中的线程直接理解为操作系统层面的线程,事实上它可能是一个线程、一个纤程甚至于一个.NET自定义的结构。唯一可以确定的是,.NET开发小组的设计会努力使程序的效率变高,所以程序员可以放心地去使用.NET的线程机制。

- 相关文章:
发表评论
◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。





