19.6.88. Mutex(声明同步/互斥对象)
语法 :
Mutex ( MutexName, SyncLevel )
参数
MutexName 作为 Namestring 数据类型求值。
SyncLevel 是可选项,用于指定 Mutex 同步对象的逻辑嵌套级别。当前同步级别在线程内部维护,表示该线程当前已获取的互斥对象中最大的 SyncLevel。线程在获取任何互斥体之前的 SyncLevel 为零。全局锁(_GL)的 SyncLevel 为零。如果未指定,默认同步级别值为零。
说明
创建一个名为 MutexName 的数据互斥同步对象,其同步级别由 Integer 类型的 SyncLevel 指定,范围为 0 到 15。
互斥同步对象为控制方法提供了一种等待某些事件的机制。为防止死锁,只要必须拥有多个同步对象,就必须始终按与获取顺序相反的顺序释放这些同步对象。
SyncLevel 参数声明该同步对象的逻辑嵌套级别。当前同步级别在线程内部维护,表示该线程当前已获取的互斥对象中最大的 SyncLevel。线程在获取任何互斥体之前的 SyncLevel 为零。全局锁(_GL)的 SyncLevel 为零。
所有 Acquire 术语都必须引用一个 SyncLevel 等于或高于当前级别的同步对象,所有 Release 术语都必须引用一个 SyncLevel 等于当前级别的同步对象。
Mutex 同步提供了互斥所有权机制。所有权通过 Acquire 术语获取,并通过 Release 术语释放。在任何调用完成之前,都必须放弃对 Mutex 的所有权。例如,顶层控制方法在仍然持有某个 Mutex 的所有权时不能退出。对 Mutex 所有权的获取可以嵌套(同一线程可多次获取)。