文档章节

信号量(Semaphore)很形象的比喻

磊神Ray
 磊神Ray
发布于 2011/08/25 11:44
字数 488
阅读 144
收藏 1

3 月,跳不动了?>>>

信号量

信号量(Semaphore),有时被称为信号灯,是在多线程环境下使用的一种设施, 它负责协调各个线程, 以保证它们能够正确、合理的使用公共资源。Semaphore分为单值和多值两种,前者只能被一个线程获得,后者可以被若干个线程获得。

比喻

以一个停车场是运作为例。为了简单起见,假设停车场只有三个车位,一开始三个车位都是空的。这 时如果同时来了五辆车,看门人允许其中三辆不受阻碍的进入,然后放下车拦,剩下的车则必须在入口等待,此后来的车也都不得不在入口处等待。这时,有一辆车 离开停车场,看门人得知后,打开车拦,放入一辆,如果又离开两辆,则又可以放入两辆,如此往复。

        在这个停车场系统中,车位是公共资源,每辆车好比一个线程,看门人起的就是信号量的作用。

        更进一步,信号量的特性如下:信号量是一个非负整数(车位数),所有通过它的线程(车辆)都会 将该整数减一(通过它当然是为了使用资源),当该整数值为零时,所有试图通过它的线程都将处于等待状态。在信号量上我们定义两种操作: Wait(等待) 和 Release(释放)。 当一个线程调用Wait(等待)操作时,它要么通过然后将信号量减一,要么一直等下去,直到信号量大于一或超时。Release(释放)实际上是在信号量 上执行加操作,对应于车辆离开停车场,该操作之所以叫做“释放”是因为加操作实际上是释放了由信号量守护的资源。

© 著作权归作者所有

磊神Ray
粉丝 83
博文 64
码字总数 34935
作品 0
徐汇
程序员
私信 提问
加载中

评论(0)

Semaphore的使用

Semaphore介绍: Semaphore (信号量)从概念上讲维护了一个许可集. 在获取acquire()到许可之后才能执行任务,每获取一次许可,许可数-1,在线程释放release()之后许可数+1。Semaphore就是根据许...

famiover
2016/09/26
27
0
信号量: Semaphore

是一种计数器,用来保护一个或者多个共享资源的访问。 Semaphore.acquire() //获取信号量,,当信号量的内部计数器变成0的时候,信号量将阻塞线程直到其被释放。如果阻塞期间被中断会抛出异常...

Canaan_
2018/08/10
11
0
GeekOS Project3

1项目3 1.1项目3设计要求 要求学生改进GeekOS的调度程序,实现基于4级反馈队列的调度算法(初始GeekOS系统仅提供了FIFO进程调度算法),并实现信号量,支持进程间通信。 即完成以下几项: (1...

长平狐
2013/06/03
970
0
iOS笔记(一)GCD多线程:信号量和条件锁

1.信号量 dispatchsemaphoret 在NSOperation中,可以直接设置最大并发数来控制并发数量,在GCD中,控制并发数量由信号量来完成。 信号量是一个整形值并且具有一个初始计数值,并且支持两个操...

悟空我腿有点酸
2015/10/17
687
0
GCD 信号量控制并发 (dispatch_semaphore)

当我们在处理一系列线程的时候,当数量达到一定量,在以前我们可能会选择使用NSOperationQueue来处理并发控制,但如何在GCD中快速的控制并发呢?答案就是dispatchsemaphore,对经常做unix开发...

啊子同
2016/09/20
34
0

没有更多内容

加载失败,请刷新页面

加载更多

订单管理

订单管理 店铺后台如何管理订单 如图所示 1、功能路径 Niushop商城电脑端后台-订单 2、流程介绍 买家在商城购买商品,系统则会产生订单,而后台可查看所有订单信息,并对订单可备注 1.查看订...

Geek-Chic
11分钟前
8
0
学FPGA如何少走10年弯路?入门很重要!

与典型的微控制器相比,现场可编程门阵列FPGA是一种能够提供更强性能和灵活性的器件,本文通过解答几个有关FPGA的常见问题——什么是FPGA、为什么我会需要FPGA、如何为FPGA编程——为开发者提...

demyar
16分钟前
11
0
javascript之Bom和Dom

参考:https://www.cnblogs.com/Qian123/p/5217059.html

九重町
17分钟前
12
0
关于Redis RedLock算法的争论

内容简介:Martin上来就问,我们要锁来干啥呢?2个原因:对于第1种原因,我们对锁是有一定宽容度的,就算发生了两个节点同时工作,对系统的影响也仅仅是多付出了一些计算的成本,没什么额外的...

stys35
36分钟前
20
0
HTML使用雪碧图做背景

<!DOCTYPE html> <html lang="zh"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>雪碧图背景图片使用</title> <style> ......

布鲁斯里
43分钟前
20
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部