tkl_mutex | 互斥锁
tkl_mutex 接口用于在多任务环境中创建和管理递归互斥锁,以实现对共享资源的同步访问。它是各平台在其 RTOS 之上实现的内核抽象层(TKL)适配。这些函数创建的互斥锁均为递归锁:持有线程可多次加锁,并须对应解锁相同次数。
类型
typedef void *TKL_MUTEX_HANDLE;
TKL_MUTEX_HANDLE 是互斥锁的不透明句柄。
tkl_mutex_create_init
OPERATE_RET tkl_mutex_create_init(TKL_MUTEX_HANDLE *pMutexHandle);
创建并初始化一个递归互斥锁。
| 参数 | 说明 |
|---|---|
pMutexHandle | 输出参数,接收创建的互斥锁句柄。 |
- 返回值:
OPRT_OK表示成功,其他值则表示发生错误。详细错误代码请参考tuya_error_code.h。
tkl_mutex_lock
OPERATE_RET tkl_mutex_lock(const TKL_MUTEX_HANDLE mutexHandle);
锁定一个递归互斥锁。若该互斥锁已被其他线程持有,调用线程将阻塞,直到其可用。
| 参数 | 说明 |
|---|---|
mutexHandle | 互斥锁句柄。 |
- 返回值:
OPRT_OK表示成功,其他值则表示发生错误。详细错误代码请参考tuya_error_code.h。
tkl_mutex_trylock
OPERATE_RET tkl_mutex_trylock(const TKL_MUTEX_HANDLE mutexHandle);
尝试锁定一个递归互斥锁,不会阻塞。无论是否获得锁都立即返回。
| 参数 | 说明 |
|---|---|
mutexHandle | 互斥锁句柄。 |
- 返回值:
OPRT_OK表示成功,其他值则表示发生错误。详细错误代码请参考tuya_error_code.h。
tkl_mutex_unlock
OPERATE_RET tkl_mutex_unlock(const TKL_MUTEX_HANDLE mutexHandle);
解锁调用线程先前锁定的递归互斥锁。
| 参数 | 说明 |
|---|---|
mutexHandle | 互斥锁句柄。 |
- 返回值:
OPRT_OK表示成功,其他值则表示发生错误。详细错误代码请参考tuya_error_code.h。
tkl_mutex_release
OPERATE_RET tkl_mutex_release(const TKL_MUTEX_HANDLE mutexHandle);
释放并删除一个递归互斥锁。
| 参数 | 说明 |
|---|---|
mutexHandle | 互斥锁句柄。 |
- 返回值:
OPRT_OK表示成功,其他值则表示发生错误。详细错误代码请参考tuya_error_code.h。