所谓通讯的同步是指多个线程同时进行或严格按照顺序执行,数据的严格性是指发送多少数据接收多少数据,不能出现数据丢失或重复接收的现象。
labview的同步机制有事件发生、集合点、通知器、信号量。
可以这么来记忆:事急(集)通信。
1.事件发生
图1-事件发生例子的前面板和程序框图
从前面板可以看出已经出现了不同步情况,因为线程1所在循环耗时长。
而且,在采集开关没有on,会先采集一次。
这是极端情况,有时也是可以用的。
2.集合点
图2-集合点例子的前面板和程序框图
从前面板可以看出,严格同步,线程1和线程2采集次数一样的。
必须要等采集开关on时,才开始采集。
集合点能实现严格同步。
3.通知器
图3-通知器的前面板和程序框图
从上图可以看出,线程1和线程2出现了不同步现象。
必须要等采集开关on时,才开始采集。
4.信号量
图4 信号量例子的前面板
图5-信号量例子的程序框图
由前面板可看出,两个线程中的一个先采集100次,然后另外一个线程再采集100次,然后结束,
实现了有限资源的合理利用。
即限制可以同时取用共享(受保护)资源的任务数量方法。
比如多线程对1个文件写、同一串口的写操作的情况,都可利用信号量。
参考链接如下:
事件发生:
https://download.csdn.net/download/weixin_39926429/87904328
集合点:
https://download.csdn.net/download/weixin_39926429/87914061
通知:
https://download.csdn.net/download/weixin_39926429/87904329
信号量:
https://download.csdn.net/download/weixin_39926429/87914064