C#实战小技巧(三):Semaphore信号量
来源:互联网 发布:淘宝店如何上架宝贝 编辑:程序博客网 时间:2024/03/19 12:22
1.简介
Semaphore是操作系统中用于控制线程同步互斥的信号量。在编写多线程的程序时,可以使用Semaphore信号量来协调多线程并行,使各个线程能够合理地共享资源,保证程序正确运行。
2.初始化
Semaphore.Semaphore(intinitialCount,int maximumCount);
Semaphore的初始化函数如上所示,initialCount和maximumCount是32位有符号整数。初始化Semaphore可当做开启了一个线程池,initialCount代表剩余空位,maximumCount代表最大容量。示例如下,当前空位为0,最大容量为1:
Semaphore sem = new Semaphore(0, 1);
3.WaitOne()和Release()
Semaphore常用的方法有两个WaitOne()和Release()。
使用WaitOne()方法相当于等待出现退出的线程,而使用Release()方法为让一个线程退出。
假设initialCount和maximumCount都为5,开始的时候线程池有5个空位置,且总共只有5个位置,当需要并行的线程数量超过5个时,首先使用WaitOne()方法等待,发现有空位就依次进去,每进去一个空位减1,直到进去5个线程之后,空位(initialCount)为0,这时候后面的线程就一直等待,直到有线程调用了Release()方法,主动退出线程池,空位加1,在等待的线程才能继续进入线程池。
WaitOne()方法可以填入参数,用于规定最大等待时间,等待超时后,空位自动加1,继续执行下一个线程。示例如下,等待时间为1000毫秒:
sem.WaitOne(1000, true);
- C#实战小技巧(三):Semaphore信号量
- 三、信号量(semaphore)
- c# Semaphore(信号量)
- c# Semaphore(信号量)
- c# 多线程 --Semaphore(信号量)
- C#线程同步(5)- 信号量 Semaphore
- C# 线程同步(5)- 信号量 Semaphore
- C# 使用Semaphore(信号量)控制多线程
- C# 使用Semaphore(信号量)控制多线程
- Java并发编程实战--计数信号量(Semaphore)
- C# 多线程之一:信号量Semaphore
- C# 多线程之一:信号量Semaphore
- C# 多线程之一:信号量Semaphore
- C# 多线程之信号量Semaphore
- C# 多线程之一:信号量Semaphore
- 信号量(Semaphore)
- 信号量(semaphore)
- 信号量(Semaphore) 例子
- HP laserJet Pro MFP M126nw打印机连接无线设置
- java中如何给Runnable线程传递参数?
- Android 监听双卡信号强度
- quartz定时器入门示例
- Hystrix系列之熔断器
- C#实战小技巧(三):Semaphore信号量
- windows 安装 yii
- python 金融工具包
- I,P,B帧和PTS,DTS的关系
- XPATH元素定位
- 侧滑布局
- 201604-1 折点计数
- MySQL 多表关联修改语句
- MySQL无法插入数据,解决MySql只能添加1000条数据的小方法