随笔分类 -  多线程

摘要:线程同步基础知识点 1.原子操作(Interlocked):所有方法都是执行一次原子读取或一次写入操作。2.lock()语句:避免锁定public类型,否则实例将超出代码控制的范围,定义private对象来锁定。3.Monitor实现线程同步 通过Monitor.Enter() 和 Monitor. 阅读全文
posted @ 2021-05-25 13:46 码农阿亮 阅读(62) 评论(0) 推荐(0)
摘要:线程基础 一、简介 1.为了防止一个应用程序控制CPU而导致其他应用程序和操作系统本身永远被挂起这一可能情况,操作系统不得不使用某种方式将物理计算分割为一些虚拟的进程,并给予每个执行程序一定量的计算能力。此外操作系统必须始终能够优先访问CPU,并能调整不同程序访问CPU的优先级。线程正式这一慨念的实 阅读全文
posted @ 2021-05-25 11:44 码农阿亮 阅读(72) 评论(0) 推荐(0)
摘要:Parallel.For循环与普通的for循环的比较 一、Parallel.For循环优于For的情况 代码: #region Parallel.For public static void ParallelForTest() { //标准For var dt = DateTime.Now; var 阅读全文
posted @ 2021-05-22 11:14 码农阿亮 阅读(434) 评论(0) 推荐(0)
摘要:C#死锁案例代码 简介: 如下代码实现创建两个线程t1和t2,分别起初分配占用lock1和ock2资源。当一个线程t1占用资源lock1时,再去请求另外一个资源lock2时,此时由于另外一个线程t2在正占用资源t2,请求失败,等待释放资源。同时t2又发出请求资源lock1,但是lock1又被t1占用 阅读全文
posted @ 2021-05-22 10:36 码农阿亮 阅读(213) 评论(0) 推荐(0)
摘要:C# 多线程的死锁 一、死锁简介: 在多道程序设计环境下,多个进程可能竞争一定数量的资源,。一个进程申请资源,如果资源不可用,那么进程进入等待状态。如果所申请的资源被其他等待进程占有,那么该等待的进程有可能无法改变状态,这种情况下称之为死锁。 二、死锁条件 死锁的四个条件: 1.非抢占:资源不能被抢 阅读全文
posted @ 2021-05-21 19:26 码农阿亮 阅读(591) 评论(0) 推荐(0)
摘要:Parallel.For()和Parallel.For<TLocal>() 一、简介: Parallel类提供了数据和任务的并行性;Paraller.For()方法类似于C#的for循环语句,也是多次执行一个任务。使用Paraller.For()方法,可以并行运行迭代,迭代的顺序没有定义。在For( 阅读全文
posted @ 2021-05-21 17:26 码农阿亮 阅读(217) 评论(0) 推荐(1)
摘要:复杂多线程环境下使用读写锁同步写入文件 代码一: class Program { static int LogCount = 1000; static int SumLogCount = 0; static int WritedCount = 0; static int FailedCount = 阅读全文
posted @ 2021-05-21 15:49 码农阿亮 阅读(217) 评论(0) 推荐(0)
摘要:C#使用读写锁解决多线程并发 一、简介: 在开发程序的过程中,难免少不了写入错误日志这个关键功能。实现这个功能,可以选择使用第三方日志插件,也可以选择使用数据库,还可以自己写个简单的方法把错误信息记录到日志文件。现在我们来讲下最后一种方法: 在选择最后一种方法实现的时候,若对文件操作与线程同步不熟悉 阅读全文
posted @ 2021-05-21 14:30 码农阿亮 阅读(723) 评论(1) 推荐(0)