TaskStatus

作者:追风剑情 发布于:2017-10-13 14:29 分类:C#

官方示例:任务状态 using System; using System.Threading; using System.Threading.Tasks; namespace TaskTest { class Program { static void Main(string[] args) { ...

阅读全文>>

标签: C#

评论(0) 浏览(2912)

Task——取消任务

作者:追风剑情 发布于:2017-10-6 20:15 分类:C#

示例:用一个CancellationTokenSource取消Task using System; using System.Threading; using System.Threading.Tasks; namespace TaskTest1 { class Program { static void Main(string[] ar...

阅读全文>>

标签: C#

评论(0) 浏览(3687)

Task——等待任务完成并获取结果

作者:追风剑情 发布于:2017-10-1 12:38 分类:C#

示例: task.Wait()的使用 using System; using System.Threading.Tasks; namespace TastTest { class Program { static void Main(string[] args) { //处理Task中未观察到的异...

阅读全文>>

标签: C#

评论(0) 浏览(5169)

给枚举增加扩展方法

作者:追风剑情 发布于:2017-9-30 17:10 分类:C#

示例: 扩展方法 using System; using System.IO; namespace EnumTest1 { class Program { static void Main(string[] args) { FileAttributes fa = FileAttributes.Sy...

阅读全文>>

标签: C#

评论(0) 浏览(2669)

标准取消操作模式——CancellationTokenSource

作者:追风剑情 发布于:2017-9-27 11:02 分类:C#

示例: .NET Framework提供的标准取消操作模式 using System; using System.Threading; namespace CancellationTokenSourceTest { class Program { static void Main(string[] args) {...

阅读全文>>

标签: C#

评论(0) 浏览(2710)

Sleep与Yield的区别

作者:追风剑情 发布于:2017-9-26 20:12 分类:C#

Sleep()        线程调用Sleep()来告诉系统它在指定的时间内不想被调度。这个方法导致线程在指定时间内挂起。调用Sleep允许线程自愿放弃它的时间片的剩余部分。系统会使线程在大致指定的时间里不被调度。没有错——如果告诉系统你希望一个线程睡眠100毫秒,那么会睡大致那么长的时间,但也有可能会多睡眠几秒、甚至几分钟的时间。记住,Win...

阅读全文>>

标签: C#

评论(0) 浏览(2818)

线程同步——volatile

作者:追风剑情 发布于:2017-9-26 10:48 分类:C#

volatile是控制单个变量线程同步的关键字 示例 using System; using System.Threading; namespace volatileTest { class Program { //volatile关键字保证了同一时间只会有1条线程访问此变量 //线程不会进行本地缓存(即,直接在共...

阅读全文>>

标签: C#

评论(0) 浏览(2694)

线程同步——SpinLock

作者:追风剑情 发布于:2017-9-25 20:40 分类:C#

当一个线程在获取锁的时候,如果锁已经被其它线程获取,那么该线程就循环等待。 优点:不会使线程进入阻塞状态,没有上下文切换。 缺点:循环等待消耗CPU。 自旋锁(SpinLock)使用场景: ① 多核CPU ② "事务"粒度小,很快处理完成 ③ 自旋锁中的代码块不要使用Sleep(),因为一但休眠,就没法再次被自动唤醒。 示例: FCL的自旋锁 ...

阅读全文>>

标签: C#

评论(0) 浏览(3091)

线程同步——SpinWait

作者:追风剑情 发布于:2017-9-23 11:31 分类:C#

示例:线程自旋 using System; using System.Threading; using System.Diagnostics; namespace SpinWaitTest { class Program { static void Main(string[] args) { T...

阅读全文>>

标签: C#

评论(0) 浏览(4165)

线程同步——Monitor

作者:追风剑情 发布于:2017-9-22 17:01 分类:C#

示例 using System; using System.Threading; namespace MonitorTest { class Program { private static object lock_obj = new object(); static void Main(string[] args) ...

阅读全文>>

标签: C#

评论(0) 浏览(2843)

线程同步——AutoResetEvent

作者:追风剑情 发布于:2017-9-21 11:00 分类:C#

控制线程同步 示例 using System; using System.Threading; namespace AutoResetEventTest { class Program { private static AutoResetEvent event_1 = new AutoResetEvent(true); ...

阅读全文>>

标签: C#

评论(0) 浏览(3293)

信号量——Semaphore

作者:追风剑情 发布于:2017-9-20 21:31 分类:C#

可用来限制同时访问某个资源的线程数量。 示例 using System; using System.Threading; namespace SemaphoreTest { class Program { static SimpleWaitLock slock; static void Main(strin...

阅读全文>>

标签: C#

评论(0) 浏览(12627)

互斥体——Mutex

作者:追风剑情 发布于:2017-9-19 20:25 分类:C#

      互斥体(mutex)代表一个互斥的锁。互斥体有一些额外的逻辑,这造成它们比其他构造更复杂。首先,Mutex对象会查询调用线程的Int32 ID,记录是哪个线程获得了它。一个线程调用ReleaseMutex时,Mutex确保调用线程就是获取Mutex的那个线程。如若不然,Mutex对象的状态就不会改变,而ReleaseMutex会抛出一个System.App...

阅读全文>>

标签: C#

评论(0) 浏览(4405)

利用原子操作加锁确保线程安全——Interlocked

作者:追风剑情 发布于:2017-9-19 17:39 分类:C#

这是官方例子 https://msdn.microsoft.com/zh-cn/library/system.threading.interlocked.aspx using System; using System.Threading; namespace InterlockedExchange_Example { class MyInterlockedExcha...

阅读全文>>

标签: C#

评论(0) 浏览(3479)

序列化

作者:追风剑情 发布于:2017-9-18 21:47 分类:C#

示例一:二进制序列化 using System; using System.IO; using System.Collections.Generic; using System.Runtime.Serialization; using System.Runtime.Serialization.Formatters.Binary; namespace SerializableTe...

阅读全文>>

标签: C#

评论(0) 浏览(3646)

ICSharpCode.SharpZipLib

作者:追风剑情 发布于:2017-8-30 11:28 分类:C#

using System; using System.IO; using System.Collections.Generic; using ICSharpCode.SharpZipLib.Zip; namespace SharpZipLibTest { class Program { static void Main(string[] args...

阅读全文>>

标签: C#

评论(0) 浏览(3264)

单例模式——双检锁

作者:追风剑情 发布于:2017-8-12 16:07 分类:C#

using System; using System.Threading; namespace Test1 { class Program { static void Main(string[] args) { } } public sealed class Singleton {...

阅读全文>>

标签: C#

评论(0) 浏览(13797)

执行上下文

作者:追风剑情 发布于:2017-7-11 20:13 分类:C#

      每个线程都关联了一个执行上下文数据结构。执行上下文(execution context)包括的东西有安全设置(压缩栈、Thread的Principal属性和Windows身份)、宿主设置(参见System.Threading.HostExecutionContextManager)以及逻辑调用上下文数据(参见System.Runtime.Remoting....

阅读全文>>

标签: C#

评论(0) 浏览(2726)

执行简单的计算限制操作

作者:追风剑情 发布于:2017-7-10 22:22 分类:C#

要将一个异步的计算限制操作放到线程池的队列中,通常可以调用ThreadPool类定义的以下方法之一: static Boolean QueueUserWorkItem(WaitCallback callBack); static Boolean QueueUserWorkItem(WaitCallback callBack, Object state); 这些方法向线程...

阅读全文>>

标签: C#

评论(0) 浏览(2620)

CLR线程池基础

作者:追风剑情 发布于:2017-7-9 15:53 分类:C#

      创建和销毁线程是一个昂贵的操作,要耗费大量时间。另外,太多的线程会浪费内存资源。由于操作系统必须调度可运行的线程并执行上下文切换,所以太多的线程还对性能不利。为了改善这种情况,CLR包含了代码来管理它自己的线程池(thread pool)。线程池是你的应用程序能使用的线程集合。每个CLR一个线程池;这个线程池由CLR控制的所有AppDomain共...

阅读全文>>

标签: C#

评论(0) 浏览(2535)

CLR线程和Windows线程

作者:追风剑情 发布于:2017-7-5 20:37 分类:C#

CLR使用Windows的线程处理功能. 注意  在.NET Framework的早期岁月,CLR团队认为有朝一日CLR会提供不一定会映射到Windows线程的逻辑线程。但大约在2005年的时候,这个尝试宣告失败,CLR团队放弃了在这方面的努力。所以,今天的CLR线程完全等价于Windows线程。但.NET Framework仍然留下了一些能看出当年努力成果的一些东西。例如,...

阅读全文>>

标签: C#

评论(0) 浏览(3864)

线程调度和优先级

作者:追风剑情 发布于:2017-7-4 21:58 分类:C#

      抢占式(preemptive)操作系统必须使用算法判断在什么时候调度哪些线程多长时间。本节讨论Windows采用的算法。每个线程的内核对象都包含一个上下文结构。上下文(context)结构反映了线程上一次执行完毕后CPU寄存器的状态。在一个时间片(time-slice)之后,Windows检查现存的所有线程内核对象。在这些对象中,只有那些没有正在...

阅读全文>>

标签: C#

评论(0) 浏览(4641)

Powered by emlog  蜀ICP备18021003号-1   sitemap

川公网安备 51019002001593号