信号量

✍ dations ◷ 2025-03-03 17:45:18 #电脑术语,协同控制,荷兰发明

信号量(英语:semaphore)又称为信号标,是一个同步对象,用于保持在0至指定最大值之间的一个计数值。当线程完成一次对该semaphore对象的等待(wait)时,该计数值减一;当线程完成一次对semaphore对象的释放(release)时,计数值加一。当计数值为0,则线程等待该semaphore对象不再能成功直至该semaphore对象变成signaled状态。semaphore对象的计数值大于0,为signaled状态;计数值等于0,为nonsignaled状态.

semaphore对象适用于控制一个仅支持有限个用户的共享资源,是一种不需要使用忙碌等待(busy waiting)的方法。

信号量的概念是由荷兰计算机科学家艾兹赫尔·戴克斯特拉(Edsger W. Dijkstra)发明的,广泛的应用于不同的操作系统中。在系统中,给予每一个进程一个信号量,代表每个进程目前的状态,未得到控制权的进程会在特定地方被强迫停下来,等待可以继续进行的信号到来。如果信号量是一个任意的整数,通常被称为计数信号量(Counting semaphore),或一般信号量(general semaphore);如果信号量只有二进制的0或1,称为二进制信号量(binary semaphore)。在linux系统中,二进制信号量(binary semaphore)又称互斥锁(Mutex)。

计数信号量具备两种操作动作,称为V(signal())与P(wait())(即部分参考书常称的“PV操作”)。V操作会增加信号标S的数值,P操作会减少它。

运作方式:

线程使用CreateSemaphore或CreateSemaphoreEx函数创建一个semaphore对象。此时可以指定semaphore的当前计数值与计数值上限;也可指定semaphore对象的名字。其他进程中的线程可以指出已存在的semaphore对象的名字通过调用OpenSemaphore函数打开它。

如果多个线程在等待一个semaphore对象,不保证按照先进先出(FIFO)顺序调度这些等待线程。外部事件,如内核模式的异步过程调用可改变等待顺序。

在semaphore对象为signaled状态时,等待函数返回会把该semaphore对象计数值减1。函数ReleaseSemaphore把semaphore对象的计数值增加指定的值。任何线程,哪怕它没有等待完成过该semaphore对象,也可以使用ReleaseSemaphore来增加semaphore对象的计数。如果ReleaseSemaphore导致对象计数值超过上限,则该函数调用失败,返回298号错误:“Too many posts were made to a semaphore”。

一个线程多次等待同一个semaphore对象,每次等待操作完成都会降低semaphore对象计数值(直至计数值为0时该线程阻塞)。然而,通过multiple-object等待函数使用一个数组包含着同一个semaphore对象的多个句柄,不能实现对这个semaphore对象计数值的多次下降。

用完semaphore对象后,调用CloseHandle函数关闭它。semaphore对象的最后一个句柄被关闭后,操作系统会摧毁它。关闭semaphore并不影响它的计数值。因此,关闭semaphore前或者进程终止前,要确保已经正确调用过ReleaseSemaphore。否则,挂起等待该semaphore对象的线程会永久阻塞或超时返回。

相关

  • 接合孢子接合孢子是接合菌的有性孢子,由菌丝长出形态相同或略有不同地配子囊接合而成。接合孢子是由菌丝生出的结构基本相似,形态相同或略有不同的两个配子囊接合而成。首先,两个化学
  • 澳大利亚 (消歧义)澳大利亚可能指:
  • 里约环境与发展宣言里约环境与发展宣言(简称里约宣言),是一份由联合国环境与发展会议(又称地球高峰会)在1992年发表的简短文件。里约宣言包括27条原则,旨在指导今后世界各地的可持续发展。第1条原则:
  • TGTG、Tg或tg可能指以下其中一个项目:
  • 飞云江飞云江是浙江省内第三大水系。长约176千米,流域面积3731平方千米,平均流量144立方米/秒。出自景宁畲族自治县境内洞宫山支脉。流向自北往南,途经温州泰顺县,横贯文成县和瑞安市
  • 京沪坐标:35°24′26″N 118°15′31″E / 35.4073484°N 118.2585205°E / 35.4073484; 118.2585205北京-上海高速公路(国家高速公路网编号G2,简称京沪高速)是中国第一条全线建成高
  • 体育社会学实证主义 · 反实证主义(英语:Antipositivism) 结构主义 · 冲突理论 中层理论 · 形式理论 批判理论 人口 · 团体 · 组织(英语:Organizational theory) · 社会化 社会性
  • 介电质介电质(英语:dielectric)是一种可被电极化的绝缘体。假设将介电质置入外电场,则束缚于其原子或分子的束缚电荷不会流过介电质,只会从原本位置移动微小距离,即正电荷朝着电场方向稍
  • 南宁州 (云南)云南政权 南宁州,中国唐朝时设置的州。隋朝平定云南古代宁州之地,设南宁州总管府。唐朝为南宁州。治所在味县(今云南省曲靖市西北),包括今云南省弥勒市以北、抚仙湖东岸的南盘江
  • All your base are belong to us“All your base are belong to us”(简称AYBABTU、All your base或AYB')是一句文法有误的英语句子(Engrish),经过互联网传播致使广泛流传,并成为了一个网络迷因。此句文法错误的