C#多线程学习笔记(二)

C#线程管理精要
a.其它线程都是依附于Main()函数所在的线程的
   Main()函数是C#程序的入口,起始线程可以称之为主线程
   如果所有的前台线程都停止了,那么主线程可以终止,而所有的后台线程都将无条件终止。
   而所有的线程虽然在微观上是串行执行的,但是在宏观上你完全可以认为它们在并行执行。

b.可能通过Thread.ThreadState来访问线程当前的状态
Aborted:线程已停止 AbortRequested:线程的Thread.Abort()方法已被调用,但是线程还未停止 Background:线程在后台执行,与属性Thread.IsBackground有关 Running:线程正在正常运行 Stopped:线程已经被停止 StopRequested:线程正在被要求停止 Suspended:线程已经被挂起(此状态下,可以通过调用Resume()方法重新运行) SuspendRequested:线程正在要求被挂起,但是未来得及响应 Unstarted:未调用Thread.Start()开始线程的运行 WaitSleepJoin:线程因为调用了Wait(),Sleep()或Join()等方法处于封锁状态

c.后台线程与前台线程的区别在于
    后台线程那不妨碍程序的终止。一旦一个进程所有的前台线程都终止后,CLR(通用语言运行环境)将通过调用任意一个存活中的后台进程的Abort()方法来彻底终止进程。

d.设置Thread的优先级
当线程之间争夺CPU时间时,CPU按照是线程的优先级给予服务的。在C#应用程序中,用户可以设定5个不同的优先级,由高到低分别是Highest,AboveNormal,Normal,BelowNormal,Lowest,
在创建线程时如果不指定优先级,那么系统默认为ThreadPriority.Normal。给一个线程指定优先级
我们可以使用如下代码来设置线程的优先级

None.gif  //设定优先级为最低
None.gif
  myThread.Priority=ThreadPriority.Lowest; 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值