什么是信号量?

更新 Apr 1, 2021

适用于

软件

  • LabVIEW

问题详述

什么是信号量,它在LabVIEW中有什么用?

解决方案

信号量是一种用来限制可以同时取用共享(受保护)资源的任务数量方法。受保护的资源或关键代码部分可能包括写入全局变量或与外部仪器进行通信。您可以使用信号量使您的代码线程安全(thread-safe),并防止竞争条件(Race Condition)。信号量类似于其他编程语言中的互斥(Mutual Exclusion)。

这对于保护两个或多个不应同时调用的关键代码很有用。在进入关键代码之前,线程必须获取信号量。如果关键代码中没有线程,则线程会立即进入代码。关键代码执行完毕后,该线程必须释放信号量。其他想要进入关键代码的线程必须等待,直到第一个线程释放了信号量。
image.png
图1:信号量选板VI(编程»同步»信号量
使用信号量方式,先使用“获取信号量引用”VI创建信号量,然后将“获取信号量” VI和“释放信号量” VI分别放置在每个关键代码的开始和结束。因此,每个关键代码可以获取并释放信号量,以控制数据正确。在程序结束之前,使用“释放信号量引用” VI。

相关信息

在LabVIEW附带的范例中查找范例程序。打开LabVIEW, 选择帮助”»”查找范例“»"搜索”,然后输入信号量作为搜索关键字。