RAPID 信号的互锁和同步 WaitTestAndSet 和 TestAndSet
来源:互联网 发布:jquery 1.10.2.js 编辑:程序博客网 时间:2024/06/07 08:59
RAPID 信号的互锁和同步
WaitTestAndSet 指令等待指定的持久型 BOOL 变量变成 FALSE.当变量值变为 FALSE, 该指令将设置变量为 TRUE 并继续执行. 该持久型变量可被作为同步或者互斥时的一个 BOOL 信号量。
这个指令与 TestAndSet 有着同样的基本功能。但是 WaitTestAndSet 一直等到 BOOL 变量变成 FALSE ,而 TestAndSet指令立即终止。
不推荐在中断程序中使用 WaitTestAndSet 指令。UNDO handler, 或者 event routines.
举例:在资源需要同时访问的时候:
Use of some RAPID routines with function problems when executed inparallel.
Use of the FlexPendant - Operator Log.
Example 1
为了避免在操作日志上输出混合的日志(一个是主程序的,一个是背景程序的)使用 WaitTestAndSet 功能保证每个任务输出的三行都是在一起的,不被其他任务的输出打乱。如果 MAIN 程序通过 WaitTestAndSet 首先设置了标志位 (tproutine_inuse),那么背景程序 BACK1 必须等待 MAIN 程序离开标志位之后,背景程序才能输出日志。
MAIN program task: PERS bool tproutine_inuse := FALSE; ... WaitTestAndSet tproutine_inuse; TPWrite "First line from MAIN"; TPWrite "Second line from MAIN"; TPWrite "Third line from MAIN"; tproutine_inuse := FALSE;BACK1 program task: PERS bool tproutine_inuse := FALSE; ... WaitTestAndSet tproutine_inuse; TPWrite "First line from BACK1"; TPWrite "Second line from BACK1"; TPWrite "Third line from BACK1"; tproutine_inuse := FALSE;
0 0
- RAPID 信号的互锁和同步 WaitTestAndSet 和 TestAndSet
- LTE-产生参考信号和同步信号
- .NET组件程序设计 第8章 多线程和并发管理 同步线程_互锁,读写锁
- 你了解Cisco的PVST、PVST+和Rapid-PVST+吗?
- 你了解Cisco的PVST、PVST+和Rapid-PVST+吗?
- 你了解Cisco的PVST、PVST+和Rapid-PVST+吗
- 用户模式的线程同步原子访问:InterLocked互锁函数
- -【用户方式线程同步】互锁的函数家族
- Tri-Level和Bi-Level同步信号
- 异步信号同步和边沿检测
- MFC工作线和UI主线程互锁问题的解决方法
- 同步锁、互锁(死锁)
- QT的信号和信号槽
- 高速信号和高频信号的区别
- 可靠信号和不可靠信号的测试
- 超难的SQL Server timed out 和 互锁冲突 的问题,两三年才找到原因。
- 互锁的原子操作
- 信号和信号处理
- Apache拦截HTTP请求
- Java——日期格式
- 各种浏览器的UserAgent 及JS和PHP对其使用
- 转载 JSTL标签库学习
- [LeetCode] 3Sum
- RAPID 信号的互锁和同步 WaitTestAndSet 和 TestAndSet
- 几种排序算法的最简单实现方式
- poj2386Lake Counting
- C++中的几种符合类型
- Java——网络编程
- cpp与cpp之间传递消息
- Lucas–Kanade光流算法
- 如何找出IOS App的URL Scheme
- WFP面试题