多线程之旅
文章平均质量分 80
July_Lee
这个作者很懒,什么都没留下…
展开
-
[多线程之旅] 一、初识多线程
一、 线程的概念默认情况下,C# 程序具有一个线程。此线程执行程序中以Main方法开始和结束的代码。Main直接或间接执行的每一个命令都由默认线程(或主线程)执行,当Main返回时此线程也将终止。不过,可以创建辅助线程,以便与主线程一起并行执行代码。这些线程通常称为“辅助线程”。辅助线程可以用于执行耗时较多的任务或时间要求紧迫的任务,而不必占用主线程。例如,辅助线程经常用在服务原创 2013-10-26 12:22:44 · 990 阅读 · 0 评论 -
[多线程之旅] 三、线程同步基础
一、 引言多线程编程给我们带来了很好的用户体验,同时也充分了利用了CPU,但带好的好处的同时,我们又要是付出代价的,代价就是我们要考虑很多的问题,例如当多个线程同时竞争共享资源时,则很有可能对共享资源的状态进行破坏,因此我们需要采取一些策略—线程同步来解决这一问题。关于线程同步是一个很深很长的话题,我只是在初探其皮毛时,写一下学习笔记,巩固记忆,关于同步话题打算用多往篇来说明,在此原创 2013-11-03 22:02:57 · 1096 阅读 · 0 评论 -
[多线程之旅] 五、浅析Thread.VolatileRead/VolatileWrite
一、volatile的局限上一节,我们简要的分析了volatile对易失性的支持,对于某些字段可能被多线程共享时,我们往往要考虑这些字段的可见性,以及考虑CPU和编译器对代码顺序进行优化(尽管编译器和CPU在实际中很少这样做)带来的不可预知的影响,因此C#提供了volatile关键字,它告诉编译器确保对易失字段的所有访问都是以易失读取或者易失写入的方式执行,并且告诉C#和JIT编译器不将字原创 2013-11-18 13:01:03 · 3614 阅读 · 0 评论 -
[多线程之旅]四、浅谈volatile
一、 内存操作顺序导致多线程编程的具有复杂性的众多原因之一是:编译器和硬件可能会在背后悄然改变程序的操作顺序,这种顺序的的改变不会影响单线程的行为,但在多线程编程中,由于编译器和硬件的这种行为,可能会导致一些我们异想不到的结果,我们先看下Jeffrey的《CLR VIA C#》中的一段代码示例:internal class ThreadsSharingData{原创 2013-11-03 22:20:40 · 956 阅读 · 0 评论