create_mutexT_create_mutexCreateMutexCreateMutexcreate_mutex创建互斥锁(算子)

名称

create_mutexT_create_mutexCreateMutexCreateMutexcreate_mutex — 创建一个互斥同步对象。

签名

create_mutex( : : AttribName, AttribValue : MutexHandle)

Herror T_create_mutex(const Htuple AttribName, const Htuple AttribValue, Htuple* MutexHandle)

void CreateMutex(const HTuple& AttribName, const HTuple& AttribValue, HTuple* MutexHandle)

void HMutex::HMutex(const HTuple& AttribName, const HTuple& AttribValue)

void HMutex::HMutex(const HString& AttribName, const HString& AttribValue)

void HMutex::HMutex(const char* AttribName, const char* AttribValue)

void HMutex::HMutex(const wchar_t* AttribName, const wchar_t* AttribValue)   ( Windows only)

void HMutex::CreateMutex(const HTuple& AttribName, const HTuple& AttribValue)

void HMutex::CreateMutex(const HString& AttribName, const HString& AttribValue)

void HMutex::CreateMutex(const char* AttribName, const char* AttribValue)

void HMutex::CreateMutex(const wchar_t* AttribName, const wchar_t* AttribValue)   ( Windows only)

static void HOperatorSet.CreateMutex(HTuple attribName, HTuple attribValue, out HTuple mutexHandle)

public HMutex(HTuple attribName, HTuple attribValue)

public HMutex(string attribName, string attribValue)

void HMutex.CreateMutex(HTuple attribName, HTuple attribValue)

void HMutex.CreateMutex(string attribName, string attribValue)

def create_mutex(attrib_name: MaybeSequence[Union[int, float, str]], attrib_value: MaybeSequence[Union[int, float, str]]) -> HHandle

描述

互斥锁是一种同步对象,用于在单个进程的线程之间协商互斥机制,以避免对全局变量等公共资源的并发修改。互斥锁有两种可能状态:解锁状态(即未被任何线程持有)和锁定状态(即被某个特定线程持有)。当线程尝试锁定已被其他线程占有的互斥锁时,需等待持有线程先释放锁定。与事件不同,线程必须持有互斥锁才能解锁。

create_mutexcreate_mutexCreateMutexCreateMutexCreateMutexcreate_mutex 根据 AttribNameAttribNameAttribNameAttribNameattribNameattrib_nameAttribValueAttribValueAttribValueAttribValueattribValueattrib_value 指定的属性分配并初始化互斥锁对象。AttribNameAttribNameAttribNameAttribNameattribNameattrib_name 指定属性类,AttribValueAttribValueAttribValueAttribValueattribValueattrib_value 指定互斥锁类型。下文描述了各属性类支持的互斥类型:

''""""""""""

空字符串设置默认属性。

'type'"type""type""type""type""type"

指定线程尝试锁定已被占有的互斥锁时发生的行为:

'sleep'"sleep""sleep""sleep""sleep""sleep"

仅挂起调用线程(默认)。若该线程已是互斥锁持有者,则行为未定义。

'spin'"spin""spin""spin""spin""spin"

一种快速互斥锁实现,该实现会忙等待被触发的互斥锁。若线程已是该互斥锁的持有者,则行为未定义。

'recursive'"recursive""recursive""recursive""recursive""recursive"

若调用线程并非互斥锁的持有者,则该线程将被挂起。但递归互斥锁可被持有者线程再次获取。递归互斥锁仅在解锁请求次数等于成功锁定请求次数时才会解锁。

互斥锁创建时即处于解锁状态。

执行信息

参数

AttribNameAttribNameAttribNameAttribNameattribNameattrib_name (输入控制)  number(-array) HTupleMaybeSequence[Union[int, float, str]]HTupleHtuple (string / integer / real) (string / int / long / double) (HString / Hlong / double) (char* / Hlong / double)

互斥锁属性类。

默认值: []

值列表: 'type'"type""type""type""type""type"

AttribValueAttribValueAttribValueAttribValueattribValueattrib_value (输入控制)  number(-array) HTupleMaybeSequence[Union[int, float, str]]HTupleHtuple (string / integer / real) (string / int / long / double) (HString / Hlong / double) (char* / Hlong / double)

互斥锁属性类型。

元素数量: AttribValue == AttribName

默认值: []

值列表: 'recursive'"recursive""recursive""recursive""recursive""recursive", 'sleep'"sleep""sleep""sleep""sleep""sleep", 'spin'"spin""spin""spin""spin""spin"

MutexHandleMutexHandleMutexHandleMutexHandlemutexHandlemutex_handle (输出控制)  mutex HMutex, HTupleHHandleHTupleHtuple (handle) (IntPtr) (HHandle) (handle)

互斥锁同步对象。

结果

create_mutexcreate_mutexCreateMutexCreateMutexCreateMutexcreate_mutex 在所有参数正确时返回 2 (H_MSG_TRUE)。如有必要,则抛出异常。

可能的后继

lock_mutexlock_mutexLockMutexLockMutexLockMutexlock_mutex, clear_mutexclear_mutexClearMutexClearMutexClearMutexclear_mutex

另见

clear_mutexclear_mutexClearMutexClearMutexClearMutexclear_mutex

模块

基础