XFusion API v1.3.0
载入中...
搜索中...
未找到
xf_lock

锁接口(通常对接互斥锁)。 更多...

xf_lock 的协作图:

函数

xf_err_t xf_lock_init (xf_lock_t *p_lock)
 初始化锁.
 
xf_err_t xf_lock_destroy (xf_lock_t lock)
 销毁锁.
 
int xf_lock_trylock (xf_lock_t lock)
 尝试上锁.
 
int xf_lock_lock (xf_lock_t lock)
 锁定直至成功.
 
int xf_lock_timedlock (xf_lock_t lock, uint32_t timeout_ms)
 锁定直至成功或者超时.
 
int xf_lock_unlock (xf_lock_t lock)
 解锁.
 
#define XF_LOCK_SUCC   1
 
#define XF_LOCK_FAIL   0
 
typedef void * xf_lock_t
 lock 句柄.
 

详细描述

锁接口(通常对接互斥锁)。

宏定义说明

◆ XF_LOCK_SUCC

#define XF_LOCK_SUCC   1

上锁或者解锁成功

在文件 xf_lock_types.h32 行定义.

◆ XF_LOCK_FAIL

#define XF_LOCK_FAIL   0

上锁或者解锁失败

在文件 xf_lock_types.h33 行定义.

类型定义说明

◆ xf_lock_t

typedef void* xf_lock_t

lock 句柄.

在文件 xf_lock_types.h40 行定义.

函数说明

◆ xf_lock_init()

xf_err_t xf_lock_init ( xf_lock_t p_lock)

初始化锁.

注意
禁止重复初始化有效的锁句柄, 以防内存泄漏.
参数
[out]p_lock获取并初始化一个锁.
返回
xf_err_t
  • XF_OK 成功
  • XF_FAIL 失败
注意
注意!此处不对 p_lock 内的值进行判断, 因为 xf_lock_t lock 存的可能是索引.

在文件 xf_lock.c48 行定义.

◆ xf_lock_destroy()

xf_err_t xf_lock_destroy ( xf_lock_t  lock)

销毁锁.

注意
销毁后注意将锁句柄赋值为 NULL, 防止产生未定义行为.
参数
lock需要销毁的锁句柄.
返回
xf_err_t
  • XF_OK 成功
  • XF_FAIL 失败

在文件 xf_lock.c56 行定义.

◆ xf_lock_trylock()

int xf_lock_trylock ( xf_lock_t  lock)

尝试上锁.

如果在本次锁定操作前已经上锁, 则立刻返回 0.

参数
lock需要锁定的锁句柄.
返回
int
  • XF_LOCK_FAIL 上锁失败
  • XF_LOCK_SUCC 上锁成功
注解
返回值等同 bool, 只有成功和失败两种可能性.

在文件 xf_lock.c64 行定义.

◆ xf_lock_lock()

int xf_lock_lock ( xf_lock_t  lock)

锁定直至成功.

注意
不推荐重复上锁, 可能导致死锁. 推荐使用非阻塞版本 xf_lock_trylock().
参数
lock需要锁定的锁句柄.
返回
int
  • XF_LOCK_FAIL 上锁失败
  • XF_LOCK_SUCC 上锁成功
注解
返回值等同 bool, 只有成功和失败两种可能性.

在文件 xf_lock.c72 行定义.

◆ xf_lock_timedlock()

int xf_lock_timedlock ( xf_lock_t  lock,
uint32_t  timeout_ms 
)

锁定直至成功或者超时.

参数
lock需要锁定的锁句柄.
timeout_ms超时时间, 单位 ms. 如果填入 (uint32_t)(~0), 行为应当等同于 xf_lock_ops_lock_t.
返回
int
  • XF_LOCK_FAIL 上锁失败
  • XF_LOCK_SUCC 上锁成功
注解
返回值等同 bool, 只有成功和失败两种可能性.

在文件 xf_lock.c80 行定义.

◆ xf_lock_unlock()

int xf_lock_unlock ( xf_lock_t  lock)

解锁.

注意
禁止重复解锁, 重复解锁可能是未定义操作.
参数
lock需要解锁的锁句柄.
返回
int
  • XF_LOCK_FAIL 解锁失败
  • XF_LOCK_SUCC 解锁成功
注解
返回值等同 bool, 只有成功和失败两种可能性.

在文件 xf_lock.c88 行定义.