关于信号量的运用,程序自带帮助文件的阐明是这样的:
信号量(互斥量)是用来维护对共享资源进行拜访的一个目标。被拜访的共享资源的代码叫作要害临界段。在同一时间,只需必定数量的使命能够拜访信号量。信号量以此方法维护对重要部分的拜访。通常情况下,一次只需一个使命能够拜访被通用信号量维护的临界段。可是,信号量或许答应一个以上使命(预界说值以下)拜访重要部分。
如要指定一起拜访被通用信号量维护的重要部分的使命数量,衔接获取信号量引证VI的巨细输入端。该VI获取对现有信号量的引证或新建一个信号量,巨细输入端指定同一时间可获取信号量的使命数量。运用获取信号量VI能够获取对一个信号量的拜访。如运用“获取信号量引证”VI创立的信号量的巨细为1,则一次只需一个使命可拜访信号量。所以,有必要运用开释信号量VI,开释对信号量的拜访。这样,另一个使命才干拜访信号量。运用开释信号量引证VI,开释对信号量的引证。
注: 将这些难明的言语转化为我自己的言语吧: 信号量大部分是用在这种景象下:多个VI中都运用了某一个子Vi,或许含有一个全局变量(首要的)。这几个VI一起运转的话,势必会相互影响(这一点之前现已阐明过),导致程序犯错。 这时分就用到了信号量。如图所示: 上面的是总VI,下面的是一个信号量下面的三个subVI的程序框图。 而子VI中都存在所示的程序段,即 config Read 还有别的一个在次序结构的下一帧,不看也罢 这样,这三个子VI独立运转的时分,都将拜访Config REAd ,这样就或许形成调用子程序的紊乱。 在此之前,咱们调用同一个子VI的时分,都是操控好次序,可是现在的三个字VI是一起运转的,咱们不能够让其一个运转结束,再运转别的一个,这样也不符合咱们程序设计的意图。 所以信号量呈现了。 信号量操控 三个字VI的共享资源,不一起被调用。当然也不确定哪一个子VI先拜访共享资源,可是没关系,他们三个仍是很调和的,参加第二个先运转,那么他就会确定共享资源,说“哥先用”。余下的两个就会说“你先用呗,我也不着急用”。然后排在后边,当它用完之后,就要开释掉资源,他自己不会开释的,所以,咱们需要将开释信息量写入到程序中,然后死一个和第三个VI就能够去调用那个共享资源了,当然,仍是只需一个能够用。“那哥用了?好不”第一个对第三个说。“用吧,我横竖不着急”。 进程大约是这样的,假如我没了解错的话。 首要是为了防止共享资源被 一起拜访,防止犯错。也便是排挤用法! 先了解到这,再接再厉 |