您好、欢迎来到现金彩票网!
当前位置:双彩网 > 信号量 >

labview信号量的使用

发布时间:2019-06-07 23:16 来源:未知 编辑:admin

  信号量(互斥量)是用来保护对共享资源进行访问的一个对象。被访问的共享资源的代码叫作关键临界段。在同一时间,只有一定数量的任务可以访问信号量。信号量以此方式保护对重要部分的访问。通常情况下,一次只有一个任务可以访问被通用信号量保护的临界段。但是,信号量可能允许一个以上任务(预定义值以下)访问重要部分。

  如要指定同时访问被通用信号量保护的重要部分的任务数量,连接获取信号量引用VI的大小输入端。该VI获取对现有信号量的引用或新建一个信号量,大小输入端指定同一时间可获取信号量的任务数量。使用获取信号量VI可以获取对一个信号量的访问。如使用“获取信号量引用”VI创建的信号量的大小为1,则一次只有一个任务可访问信号量。所以,必须使用释放信号量VI,释放对信号量的访问。这样,另一个任务才能访问信号量。使用释放信号量引用VI,释放对信号量的引用。

  注:只要非空闲的顶层VI引用了某个信号量,信号量就一直在内存中。如顶层VI为空闲,LabVIEW将释放该VI的全部信号量引用,包括顶层VI的子VI中的引用。如LabVIEW释放上一个引用至命名信号量,LabVIEW将销毁信号量。因为只能获取引用至一个未命名信号量的引用,当顶层VI空闲时,LabVIEW将销毁一个未命名信号量。如要在多个顶层VI之间使用信号量,需为信号量命名并从顶层VI调用“获取信号量引用”VI,这样每个VI就有了对信号量的唯一引用。

  信号量大部分是用在这种情形下:多个VI中都使用了某一个子Vi,或者含有一个全局变量(主要的)。这几个VI同时运行的话,势必会互相影响(这一点之前已经说明过),导致程序出错。

  而子VI中都存在所示的程序段,即 config Read 还有另外一个在顺序结构的下一帧,不看也罢

  这样,这三个子VI独立运行的时候,都将访问Config REAd ,这样就可能造成调用子程序的混乱。

  在此之前,我们调用同一个子VI的时候,都是控制好顺序,但是现在的三个字VI是同时运行的,我们不能够让其一个运行完毕,再运行另外一个,这样也不符合我们程序设计的目的。

  信号量控制 三个字VI的共享资源,不同时被调用。当然也不确定哪一个子VI先访问共享资源,但是不要紧,他们三个还是很和谐的,加入第二个先运行,那么他就会锁定共享资源,说“哥先用”。余下的两个就会说“你先用呗,我也不着急用”。然后排在后面,当它用完之后,就要释放掉资源,他自己不会释放的,所以,我们需要将释放信息量写入到程序中,然后死一个和第三个VI就可以去调用那个共享资源了,当然,还是只有一个可以用。“那哥用了?好不”第一个对第三个说。“用吧,我反正不着急”。

http://janczakweb.com/xinhaoliang/188.html
锟斤拷锟斤拷锟斤拷QQ微锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷微锟斤拷
关于我们|联系我们|版权声明|网站地图|
Copyright © 2002-2019 现金彩票 版权所有