您的位置:首页 > 编程语言 > C#

CLR_via_C#.3rd 翻译[25.6 CLR线程和windows线程]

2010-09-07 20:04 232 查看
[b]25.6 CLR Threads and Windows Threads . CLR线程和windows线程[/b]

今天,CLR使用的是Windows的线程处理能力,所以本章第V部分实际着眼于由Windows 向开发人员公开的线程处理能力。我将解释线程在Windows中是如何工作,以及CLR如何改变线程的行为(如果能的话)。然而,如果你想更多地学习线程,建议阅读我以前就这个主题出版的一些著作,比如我的《Windows via C/C++》一书(Microsoft Press,2007)。

尽管今天的一个CLR线程是直接映射到一个Windows线程上,但微软CLR团队保留了将来把它从Windows线程分离的权利。有一天,CLR 可能引入它自己的逻辑线程概念,使一个CLR 逻辑线程并非一定映射到一个物理Windows 线程。据说,逻辑线程将使用比物理线程少得多的资源,所以能在极少量的物理线程上运行大量逻辑线程。例如,CLR可以判断你的一个线程处于等待状态,重新分配那个线程去做一个不同的任务。这个方案的好处在于:编码更简单、使用的资源更少以及潜在的性能提升。遗憾的是,要想真正实现这个方案,CLR团队还有大量工作要做,所以近期不太可能看到CLR推出这个功能。

对你来说,这一切意味着在操纵线程时,代码应尽可能少地做出一些假设。例如,应避免P/Invoke成本地Windows函数,因为这些函数对CLR线程一无所知。通过避免使用本地Windows 函数,坚持使用FCL(Framework类库)中的类型,将来在性能得到提升之后,你的代码马上就能享受到这种提升。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: