C#多线程编程
文章平均质量分 73
记录学习的过程,加深对多线程的使用和理解,也便于以后的复习
LG_985938339
长沙理工大学机械毕业,目前深圳从事java工作,努力进大厂
展开
-
C#中的异常处理机制
C#中的异常处理机制在C#中使用try catch finally语句来进行异常捕获。一般而言,在有可能会发生错误的地方,我们便需要引入这个错误处理机制,避免程序的奔溃。首先介绍try,我们需要用try块来包含将有可能会发生错误的代码,如果在try的代码块中发生错误,那么在发生错误的代码之后的try语句中的其他代码便不会再执行了,它会跳转到catch或者finally中去。接下来是catch,catch就是用来捕获代码中的错误的,一旦try块中的代码发生错误,那么catch就能捕获这种类型的错误,而原创 2020-09-24 23:56:03 · 6311 阅读 · 1 评论 -
C#中使用ConcurrentQueue进行线程安全的操作
C#中ConcurrentQueue进行线程安全的操作普通的队列什么时候、为什么能不够保证线程安全的操作呢?想要知道ConcurrentQueue为什么能够保证在多线程环境下的安全性,首先应该要知道,为什么普通的队列不能够保证、什么情况下会保证不了线程安全性的操作。在前面有了解过.net framework中队列的源码,它是使用一个数组进行数据的存储的,使用_head和_tail来指示队列的头部和尾部在数组中的索引,那么,就举一个入队的简单的例子,如果有多个线程同时进行入队列操作,当他们同时运行原创 2020-09-26 22:45:17 · 3652 阅读 · 0 评论 -
C#中的async和await的使用详解
C#中的async和await的使用在C#中,在很多的时候,都需要一些异步操作,并且在做完这些异步操作之后,可以在后面接着做一些处理,在 .net framework 4.5之后,便加入了一种简洁的方式来使用异步操作,这就是async和await。async用来声明一个函数体,将其声明为异步方法,而await则是用在这个函数体的内部,用于等待一个异步操作的完成。异步方法内部可以出现一个或者多个await,一般不要是0个,这样就失去了异步方法的意义了。...原创 2020-09-23 21:10:34 · 14081 阅读 · 0 评论 -
C#中的死锁和解决方案
C#中的死锁和解决方案在多任务系统下,当一个或多个进程等待系统资源,而资源又被进程本身或其它进程占用时,就形成了死锁。总的来说,就是两个线程,都需要获取对方锁占有的锁,才能够接着往下执行,但是这两个线程互不相让,你等我先释放,我也等你先释放,但谁都不肯先放,就一直在这僵持住了。死锁的演示 static void Main(string[] args) { Task.Run(()=> Method1()); Task原创 2020-09-18 21:34:50 · 5989 阅读 · 0 评论 -
C#多线程之Task
以前有学过一遍C#多线程编程实战,有些东西,很久不用,就容易忘记,在这里记录一下,重新再学习一遍。Task的介绍对于C#中的多线程来说,最老的用法就是用Thread来编程,它提供了一系列的方法来方便操作该线程,但是,创建一个线程是一个昂贵的操作,它需要消耗一定的内存和性能,尤其是做一些很短时间的异步操作的时候,这样做是不划算的。而使用线程池中的线程就不再需要创建线程,只需要在池中获取一个,不再使用时再将它返回池中,它适合执行短期的异步操作,但是ThreadPool却相对于Thread少了大量的.原创 2020-09-15 01:35:52 · 1628 阅读 · 0 评论 -
自旋锁的实现原理
自旋锁的实现原理自旋锁的介绍自旋锁和互斥锁比较相似,都是为了实现保护共享资源而提出的一种锁机制,在任何一个时刻,只有一个执行单元可以获取该锁,如果该锁已经被别的单元占用,那么调用者便会进行CPU空转消耗并且时刻关注该所是否已经被释放,直到自己获取该锁为止。自旋锁的特点相对于互斥锁,自旋锁是一种轻量级的锁,在有别的线程获取了该锁,需要进行自旋等待的时候,CPU依然占用着该线程资源不放,不会切换到其他线程去执行,因此,在等待时间较长的时候是不适用自旋锁的,这会拜拜消耗大量的CPU性能。而原创 2020-09-13 16:00:11 · 3274 阅读 · 0 评论 -
C#中的原子操作
C#中的原子操作原子操作的介绍所谓原子操作是指不会被线程调度机制打断的操作;这种操作一旦开始,就一直运行到结束,中间不会有任何的线程切换,它不一定是一条指令,可以是多条指令。原子操作的原理一般情况下,当我们对一个整型变量进行加一操作的时候,会有三个操作:(1)从内存中将该变量加载带CPU寄存器中(2)CPU对该变量进行加一操作(3)将该变量从CPU寄存器返回内存中1).在单核CPU中,由于线程的抢占机制,高优先级的线程可能会抢占低优先级的线程,如果低优先级的线程在对一个变量进原创 2020-09-11 00:50:58 · 4451 阅读 · 2 评论 -
线程的调度和管理机制
线程的调度和管理机制线程线程是操作系统可以进行运算调度的最小单位,它被包含在进程之中,是进程中的实际运作单位,一个进程可以包含一个或者多个线程,每个线程执行不同的任务。线程的调度和管理机制Windows的线程调度机制是基于优先级的抢先式多处理器调度,依据优先级和分配时间片来调度,每个线程都有自己的优先级。线程调度的原则:(1).优先级调度原则:每一个线程都有自己线程的基本优先级和动态优先级,它们的值处于0到31之间,值越高,优先级越大,每个优先级都有一个队列,系统会先运行优先级排在最高原创 2020-09-09 21:57:29 · 1234 阅读 · 0 评论