码迷,mamicode.com
首页 > 编程语言 > 详细

.Net线程

时间:2016-03-15 18:48:59      阅读:202      评论:0      收藏:0      [点我收藏+]

标签:

最近在读Jeffery Richter大神的著作《CLR via C#》,对线程有了更加深入的理解,故写下线程的相关知识,算是一个读书笔记。

一、线程基础

  早期,OS只运行一个线程,长时间运行的任务会阻止其他任务的执行。某些程序bug会导致真个OS停止工作。故Microsoft决定使用线程来解决这些问题。

线程的职责是对CPU进行虚拟化,让你觉得CPU可以同时干多件事。每个进程都有专用的线程,程序代码进入死循环,与那个代码关联的进程会“冻结”,但其

他进程(有自己的专用线程)不会冻结,它们会继续执行!

  上下文切换:Windows任何时刻只能将一个线程分配给一个CPU,那个线程能运行一个时间片的长度。时间片到期,Winodws就上下文切换到另一个线程。

        每次上下文切换将严重影响性能。上下文切换本身没有任何收益。

  线程开销包括:上下文切换、内存开销、时间开销(CLR花更多时间进行垃圾回收等)。

  在.Net中的线程实际上是围绕Windows向开发人员公开的线程处理功能展开的。

  后台线程:一个进程的所有前台线程停止运行时,CLR强制终止仍在运行的任何后台线程。

  线程池:CLR初始化时,线程池中没有线程。当程序执行一个异步操作时,线程池就创建一个新线程,线程任务完成不会销毁,线程会返回线程池,进入空

      闲状态,等待响应另一个请求。程序向线程池发出请求,线程池会尝试只用这一个线程来处理。如果程序发出请求的速度超过了线程池线程处理它

      们的速度,就会创建额外的线程。当一个线程池线程闲着没事干一段时间后,线程会自己终止自己以释放资源。故,线程池线程数量会动态调节。

二、

 

.Net线程

标签:

原文地址:http://www.cnblogs.com/chenhp/p/5280453.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!