2018年9月15日
摘要: 一、简介 Semaphore类限制可同时访问某一资源或资源池的线程数。线程通过调用 WaitOne方法将信号量减1,并通过调用 Release方法把信号量加1。 构造函数:public Semaphore(int initialCount,int maximumCount);通过两个参数来设置信号的 阅读全文
posted @ 2018-09-15 15:30 缘惜 阅读(247) 评论(0) 推荐(0) 编辑
摘要: 一、例子 1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Text; 5 using System.Threading; 6 using System.Threading. 阅读全文
posted @ 2018-09-15 15:16 缘惜 阅读(472) 评论(0) 推荐(0) 编辑
摘要: 一、简介 我们使用类(.net Framework中的类,如 AutoResetEvent, Semaphore类等)的方法来实现线程同步的时候,其实内部是调用操作系统的内核对象来实现的线程同步。 System.Threading命名空间中提供了一个WaitHandle 的抽象基类,此类就是包装了一 阅读全文
posted @ 2018-09-15 14:41 缘惜 阅读(2205) 评论(0) 推荐(0) 编辑
摘要: 一、简介 当我们需要对一个共享资源多次读取的时候,用前面Monitor的同步锁就没有必要了。因为同步锁每次只允许一个线程访问共享资源,其他线程都会阻塞。 此时,通过ReaderWriterLock类可以很好的实现读取并行。 二、例子 1 using System; 2 using System.Th 阅读全文
posted @ 2018-09-15 10:29 缘惜 阅读(216) 评论(0) 推荐(0) 编辑
摘要: 一、简介 Monitor.Enter和Monitor.Exit方法来实现线程同步,这个属于排他锁,即每次只有一个线程可以访问共享数据。 C#中通过lock关键字来提供简化的语法,lock可以理解为Monitor.Enter和Monitor.Exit方法的语法糖。 二、例子 1 using Syste 阅读全文
posted @ 2018-09-15 10:21 缘惜 阅读(347) 评论(0) 推荐(0) 编辑