
线程
文章平均质量分 90
subin_iecas
这个作者很懒,什么都没留下…
展开
-
C#线程(一)概述及常用方法
1. 概述与概念1.1. 入门线程小例子C#支持通过多线程并行地执行代码,一个线程有它独立的执行路径,能够与其它的线程同时地运行。一个C#程序开始于一个单线程,这个单线程是被CLR和操作系统(也称为“主线程”)自动创建的,并具有多线程创建额外的线程。class ThreadTest { static void Main() { Threadt = n...原创 2018-05-12 12:47:20 · 12704 阅读 · 3 评论 -
C#线程(二)多线程
3.多线程3.1. 锁和线程安全锁实现互斥的访问,被用于确保在同一时刻只有一个线程可以进入特殊的代码片段,考虑下面的类:class ThreadUnsafe { static int val1, val2; static void Go() { if (val2 != 0) Console.WriteLine (val1 /val2); v...原创 2018-05-12 13:13:38 · 652 阅读 · 0 评论 -
C#线程(三)线程池
4. 线程池4.1 简介一般情况下我们都使用Thread类创建线程,因为通过Thread对象可以对线程进行灵活的控制。但创建线程和销毁线程代价不菲,过多的线程会消耗掉大量的内存和CPU资源,假如某段时间内突然爆发了100个短小的线程,创建和销毁这些线程就会消耗很多时间,可能比线程本身运行的时间还长。为了改善这种状况,.NET提供了一种称之为线程池Thread Pool)的技术。线程池提供若干个固定...原创 2018-05-12 13:18:24 · 1328 阅读 · 0 评论 -
C#线程(四)异步委托
5. 异步委托5.1. 简介委托在后台可以创建一个线程,实现异步执行委托方法。我们可以使用不同的技术来异步地调用委托,并且返回结果。常用的方法有三种:使用轮询、等待句柄、异步回调我们定义一个名为TakesAWhile()方法,该方法中调用了Thread.Sleep()方法:static int TakesAWhile(int data , int ms){ Console.WriteLine(...转载 2018-05-12 13:21:22 · 751 阅读 · 0 评论 -
C#线程(五)计时器
6. 计时器 计时器可以周期性的执行某个方法。6.1. System.Threading.Timer线程计时器利用了线程池,通过线程池定期执行某个方法,因此可以严格的定时执行某个方法。如果某个方法比较耗时,该计时器通过线程池技术保证定时出发该方法,只不过通过不同的线程来执行。6.1.1. 常用方法构造方法public Timer (TimerCallback tick, object state,...原创 2018-05-12 13:23:14 · 4709 阅读 · 0 评论 -
C#线程(六)线程局部存储技术
7. 线程局部存储技术7.1. 简介我们知道,在一个进程中,所有线程的堆内存是共享的(栈除外,线程的栈内存是相互隔离的)。线程局部存储技术是使每个线程与其它线程数据存储隔离。 NET Framework 提供了两种用于使用线程本地存储区 (TLS) 机制︰ 线程相对静态字段 (即,使用标记的字段 ThreadStaticAttribute 属性) 和数据槽。 线程相关的静态字段提供更好的性能比数据...转载 2018-05-12 13:24:48 · 1097 阅读 · 0 评论 -
C#线程(七)BackgroungWorker
8. BackgroungWorker8.1.简介BackgroundWorker是一个在System.ComponentModel命名空间下帮助类,它管理着工作线程。它提供了以下特性:· 提供程序进度,完成度和退出的标准方案· 实现了IComponent接口,允许它参与Visual Studio设计器· 在工作线程之上做异常处理· 更新Wi...原创 2018-05-12 13:31:28 · 709 阅读 · 0 评论