RAPID 信号的互锁和同步 WaitTestAndSet 和 TestAndSet
2014-07-07 10:13
393 查看
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 程序离开标志位之后,背景程序才能输出日志。
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;
相关文章推荐
- #学志#进程同步的TestAndSet的理解
- BOOST源码笔记(5) - 最小的代价实现同步-无锁编程,看boost中的interlocked_bit_test_and_set实现
- What are training set, validation set and test set?
- Java Test network connection and set TimeOut time length
- whats is the difference between train, validation and test set, in neural networks?
- testBatchAndFlush(android.hardware.cts.SensorTest): WaitForFlush | sensor='PROXIMITY'
- test_and_set_bit
- SpinLock原理和实现(SpinLock:test and set value in one instruction)
- Peterson算法、test_and_set在有限等待上的说明
- Operating System: Three Easy Pieces --- Locks: Test and Set (Note)
- test_and_set_bit
- What are training set, validation set and test set?
- linux 进程间信号通知,线程间同步与通信 Test study Model
- [Training Video - 5] [Groovy Script Test Step - Collections, Exceptions] HashSet and Hashtable
- What are training set, validation set and test set?
- test_and_set_bit
- python opencv load image and splite train/test set
- AND信号灯和信号灯集-----同步和互斥解决面向对象(两)
- Whats is the difference between train, validation and test set, in neural networks?
- Test and Set