进程间通信----信号量

1. 什么是信号量

    让多个进程(或线程,本文中的进程跟线程不做区分,对进程的应用场景也可以使用在线程上)通过一个特殊变量来进行交互,一个进程在某个关键点上被迫停止执行直到接受到某个特殊变量值。通过这一措施,任何复杂的进程交互都可得到满足,这种特殊的变量就是信号量。

    信号量可以看成是一种数据操作锁,它本身不具有数据交换的功能,而是通过控制其他的通信资源(文件,外部设备)来实现进程间通信,它本身只是一种外部资源的标识。信号量在此过程中负责数据操作的互斥、同步等功能。

    即:信号量就是一种特殊变量,其本质就是一种变量。

    信号量机制由荷兰学者Edsger Dijkstra在1965年提出。

2. 为什么要使用信号量

    为了防止出现因多个进程同时访问一个共享资源而引发的一系列问题,我们需要一种方法,在任一时刻只能有一个进程访问代码的临界区域(临界区是指访问临界资源的那部分代码,临界资源是指一次仅允许一个进程使用的资源)。 

    每个进程中访问临界资源的那段程序代码称为临界区,它需要独占式地执行。而信号量就可以提供这样的一种访问机制,让一个临界区同一时间只有一个线程在访问它,也就是说信号量是用来调协进程对共享资源的访问的。

3. 信号量分类

    信号量一般分为两类:

    一般信号量

    信号量s为一个记录型数据结构,其中value为整型变量,系统初始化时为其赋值,PV操作的原语描述如下:

            P:P是荷兰语Passeren(通过)的缩写,将信号量s的value值减一,若结果小于零,则执行P操作的进程被堵塞,若结果大于等于零,则执行P操作的进程继续执行。

            V:V是荷兰语Vrijgeven(释放)的缩写,将信号量s的value值加一,若结果不大于零,则执行V操作的进程从信号量s相关的list队列中释放一个进程,使其转化为就绪态,自己则继续执行。若结果大于零,则执行V操作的进程继续执行。

    二值信号量

    信号量s为一个记录型数据结构,其value值只能取值为零或一,二值信号量PV操作的原语描述与一般信号量相同。

    在实际简单项目开发中,二值信号量的使用场景要多于一般信号量。

4. 信号量操作

    每个标准对信号量的实现提供了不同的方法,但基本的操作由信号量语义提出。针对信号量有四个操作,分别为:

        1. 初始化(initialize),也叫做建立(create);

        2. 等信号(wait),也可叫做挂起(suspend),即P操作;

        3. 给信号(signal)或发信号(post),即V操作;

        4. 清理(destroy)。

    在实际的项目开发中,信号量的使用要针对当前的操作系统所支持的协议标准类型来使用,不同的协议标准所支持的信号量操作不同,具体的实现方式也不一致,但对于支持同一标准的不同操作系统,所提供的信号量接口是一致的。

    本模块后续章节将针对具体的协议标准下的不同操作系统所实现的信号量接口进行说明。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,470评论 6 501
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,393评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,577评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,176评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,189评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,155评论 1 299
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,041评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,903评论 0 274
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,319评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,539评论 2 332
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,703评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,417评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,013评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,664评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,818评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,711评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,601评论 2 353

推荐阅读更多精彩内容

  • 18.1信号量 回顾 ■并发问题 多线程并发导致资源竞争 ■同步概念 协调多线程对共享数据的访问 任何时刻只能有一...
    龟龟51阅读 2,069评论 0 0
  • 信号与信号量是不同的两种事物。 什么是信号量 为了防止出现因多个程序同时访问一个共享资源而引发的一系列问题,我们需...
    lintong阅读 3,821评论 0 8
  • Unix进程间通信(IPC) IPC概念: 进程间通信(IPC,Inter-Process Communicati...
    metmax阅读 824评论 0 1
  • 2017.12.09新梦想学习感受有几点:1.学习了即兴演讲的公式,感觉很实用,接下来要多多运用到公司; 2.昨晚...
    味道_1445阅读 222评论 0 0
  • 春风的暖意借给了冬季留存的只是回忆~夏至的烈酒浸润了冬季留存的只是冰啤~秋色的倒影分给了冬季留存的只是足迹~音乐节...
    络琳阅读 170评论 0 0