XFusion API v1.3.0
载入中...
搜索中...
未找到
xf_lock_types.h 文件参考

锁通用数据类型。 更多...

xf_lock_types.h 的引用(Include)关系图:

浏览源代码.

结构体

struct  xf_lock_ops_s
 锁操作结构体. 更多...
 

类型定义

typedef xf_err_t(* xf_lock_ops_init_t) (xf_lock_t *p_lock)
 初始化锁.
 
typedef xf_err_t(* xf_lock_ops_destroy_t) (xf_lock_t lock)
 销毁锁.
 
typedef int(* xf_lock_ops_trylock_t) (xf_lock_t lock)
 尝试上锁.
 
typedef int(* xf_lock_ops_lock_t) (xf_lock_t lock)
 锁定直至成功.
 
typedef int(* xf_lock_ops_timedlock_t) (xf_lock_t lock, uint32_t timeout_ms)
 锁定直至成功或者超时.
 
typedef int(* xf_lock_ops_unlock_t) (xf_lock_t lock)
 解锁.
 
typedef struct xf_lock_ops_s xf_lock_ops_t
 锁操作结构体.
 
#define XF_LOCK_SUCC   1
 
#define XF_LOCK_FAIL   0
 
typedef void * xf_lock_t
 lock 句柄.
 

详细描述

锁通用数据类型。

作者
catcatBlue (catca.nosp@m.tblu.nosp@m.e@qq..nosp@m.com)
版本
1.0
日期
2024-06-25

Copyright (c) 2024, CorAL. All rights reserved.

在文件 xf_lock_types.h 中定义.

类型定义说明

◆ xf_lock_ops_init_t

typedef xf_err_t(* xf_lock_ops_init_t) (xf_lock_t *p_lock)

初始化锁.

注意
禁止重复初始化有效的锁句柄, 以防内存泄漏.
参数
[out]p_lock指向需要初始化的锁句柄的指针.
返回
xf_err_t
  • XF_OK 成功
  • XF_FAIL 失败

在文件 xf_lock_types.h64 行定义.

◆ xf_lock_ops_destroy_t

typedef xf_err_t(* xf_lock_ops_destroy_t) (xf_lock_t lock)

销毁锁.

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

在文件 xf_lock_types.h76 行定义.

◆ xf_lock_ops_trylock_t

typedef int(* xf_lock_ops_trylock_t) (xf_lock_t lock)

尝试上锁.

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

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

在文件 xf_lock_types.h90 行定义.

◆ xf_lock_ops_lock_t

typedef int(* xf_lock_ops_lock_t) (xf_lock_t lock)

锁定直至成功.

注意
调用规范不推荐重复上锁, 实现该函数时, 推荐在锁定前检测锁的持有者是否为同一个.
参数
lock需要锁定的锁句柄.
返回
int
  • XF_LOCK_FAIL 上锁失败
  • XF_LOCK_SUCC 上锁成功
注解
返回值等同 bool, 只有成功和失败两种可能性.

在文件 xf_lock_types.h105 行定义.

◆ xf_lock_ops_timedlock_t

typedef int(* xf_lock_ops_timedlock_t) (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_types.h119 行定义.

◆ xf_lock_ops_unlock_t

typedef int(* xf_lock_ops_unlock_t) (xf_lock_t lock)

解锁.

注意
推荐实现该函数时, 检测是否为重复解锁.
参数
lock需要解锁的锁句柄.
返回
int
  • XF_LOCK_FAIL 解锁失败
  • XF_LOCK_SUCC 解锁成功
注解
返回值等同 bool, 只有成功和失败两种可能性.

在文件 xf_lock_types.h133 行定义.

◆ xf_lock_ops_t

typedef struct xf_lock_ops_s xf_lock_ops_t

锁操作结构体.

注意
通常要求所有操作全部实现, 特殊情况下至少实现:
  1. init;
  2. trylock;
  3. unlock.
如未完全实现, 请用 #pragma message("...") 等方式明显地通知用户.