2018年9月15日
摘要: 一、简介 我们使用类(.net Framework中的类,如 AutoResetEvent, Semaphore类等)的方法来实现线程同步的时候,其实内部是调用操作系统的内核对象来实现的线程同步。 System.Threading命名空间中提供了一个WaitHandle 的抽象基类,此类就是包装了一 阅读全文
posted @ 2018-09-15 14:41 缘惜 阅读(2211) 评论(0) 推荐(0) 编辑
摘要: 一、简介 当我们需要对一个共享资源多次读取的时候,用前面Monitor的同步锁就没有必要了。因为同步锁每次只允许一个线程访问共享资源,其他线程都会阻塞。 此时,通过ReaderWriterLock类可以很好的实现读取并行。 二、例子 1 using System; 2 using System.Th 阅读全文
posted @ 2018-09-15 10:29 缘惜 阅读(217) 评论(0) 推荐(0) 编辑
摘要: 一、简介 Monitor.Enter和Monitor.Exit方法来实现线程同步,这个属于排他锁,即每次只有一个线程可以访问共享数据。 C#中通过lock关键字来提供简化的语法,lock可以理解为Monitor.Enter和Monitor.Exit方法的语法糖。 二、例子 1 using Syste 阅读全文
posted @ 2018-09-15 10:21 缘惜 阅读(349) 评论(0) 推荐(0) 编辑
  2018年9月14日
摘要: 一、场景 利用I/O线程来模拟浏览器对服务器请求的异步操作。 二、例子 1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Net; 5 using System.Text; 阅读全文
posted @ 2018-09-14 10:22 缘惜 阅读(1071) 评论(0) 推荐(0) 编辑
  2018年9月13日
摘要: 一、场景 使用Task来进行累加操作。 二、例子-Task使用 1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Text; 5 using System.Threading 阅读全文
posted @ 2018-09-13 12:33 缘惜 阅读(1517) 评论(0) 推荐(0) 编辑
  2018年9月11日
摘要: 一、概述 通过调用ThreadPool的QueueUserWorkItem方法来来启动工作者线程非常方便,但委托WaitCallback指向的是带有一个参数的无返回值的方法。 如果我们实际操作中需要有返回值,或者需要带有多个参数, 这时通过这样的方式就难以实现, 为了解决这样的问题,我们可以通过委托 阅读全文
posted @ 2018-09-11 19:29 缘惜 阅读(403) 评论(0) 推荐(0) 编辑
摘要: 一、线程池简介 创建和销毁线程是一个要耗费大量时间的过程,太多的线程也会浪费内存资源,所以通过Thread类来创建过多的线程反而有损于性能,为了改善这样的问题 ,.net中就引入了线程池。 线程池形象的表示就是存放应用程序中使用的线程的一个集合。 CLR初始化时,线程池中是没有线程的,在内部, 线程 阅读全文
posted @ 2018-09-11 16:17 缘惜 阅读(255) 评论(0) 推荐(0) 编辑
  2018年9月8日
摘要: 一、目的 模板方法模式把不变行为搬到超类中,从而去除了子类中的重复代码。 二、定义 模板方法模式:在一个抽象类中定义一个操作的算法骨架,将算法骨架中某些特定的操作延迟到子类中实现。 模板方法使得子类在不改变一个算法骨架的前提下,重新定义算法的某些特定步骤。 三、场景 现实生活中,我们炒菜一般遵循一个 阅读全文
posted @ 2018-09-08 17:25 缘惜 阅读(188) 评论(0) 推荐(0) 编辑
摘要: 一、定义 从“单例”字面意思上理解为一个类只有一个实例。官方定义:确保一个类只有一个实例,并提供一个全局访问点。 二、实现 下面以实现一个日志记录类为例,描述单例模式。 1 using System; 2 using System.IO; 3 4 namespace Utility 5 { 6 pu 阅读全文
posted @ 2018-09-08 16:26 缘惜 阅读(226) 评论(0) 推荐(0) 编辑
摘要: 一、目的 提供一种一对多的关系,当主题发生变化时候,可以通知所有关联的对象。 二、定义 观察者模式定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象,这个主题对象在状态发生变化时,会通知所有观察者对象,使它们能够自动更新自己的行为。 三、场景 假设多个用户订阅了微信中的汽车之家公众号 阅读全文
posted @ 2018-09-08 16:02 缘惜 阅读(176) 评论(0) 推荐(0) 编辑