acl
3.5.3.0
fiber_lock.hpp
浏览该文件的文档.
1
#pragma once
2
#include "
fiber_cpp_define.hpp
"
3
4
struct
ACL_FIBER_MUTEX
;
5
struct
ACL_FIBER_RWLOCK
;
6
7
namespace
acl
{
8
9
/**
10
* 仅能用于同一线程内部的协程之间进行互斥的互斥锁
11
*/
12
class
FIBER_CPP_API
fiber_mutex
13
{
14
public
:
15
fiber_mutex
(
void
);
16
~
fiber_mutex
(
void
);
17
18
/**
19
* 等待互斥锁
20
* @return {bool} 返回 true 表示加锁成功,否则表示内部出错
21
*/
22
bool
lock(
void
);
23
24
/**
25
* 尝试等待互斥锁
26
* @return {bool} 返回 true 表示加锁成功,否则表示锁正在被占用
27
*/
28
bool
trylock(
void
);
29
30
/**
31
* 互斥锁拥有者释放锁并通知等待者
32
* @return {bool} 返回 true 表示通知成功,否则表示内部出错
33
*/
34
bool
unlock(
void
);
35
36
private
:
37
ACL_FIBER_MUTEX
* lock_;
38
39
fiber_mutex
(
const
fiber_mutex
&);
40
void
operator=(
const
fiber_mutex
&);
41
};
42
43
/**
44
* 仅能用在同一线程内的协程之间进行互斥的读写锁
45
*/
46
class
FIBER_CPP_API
fiber_rwlock
47
{
48
public
:
49
fiber_rwlock
(
void
);
50
~
fiber_rwlock
(
void
);
51
52
/**
53
* 加读锁
54
*/
55
void
rlock(
void
);
56
57
/**
58
* 尝试加读锁
59
* @return {bool} 返回 true 表示加锁成功,否则表示锁正在被占用
60
*/
61
bool
tryrlock(
void
);
62
63
/**
64
* 解读锁
65
*/
66
void
runlock(
void
);
67
68
/**
69
* 加写锁
70
*/
71
void
wlock(
void
);
72
73
/**
74
* 尝试加写锁
75
* @return {bool} 返回 true 表示加锁成功,否则表示锁正在被占用
76
*/
77
bool
trywlock(
void
);
78
79
/**
80
* 解写锁
81
*/
82
void
wunlock(
void
);
83
84
private
:
85
ACL_FIBER_RWLOCK
* rwlk_;
86
87
fiber_rwlock
(
const
fiber_rwlock
&);
88
void
operator=(
const
fiber_rwlock
&);
89
};
90
91
}
// namespace acl
fiber_cpp_define.hpp
acl
Definition:
acl_cpp_init.hpp:4
FIBER_CPP_API
#define FIBER_CPP_API
Definition:
fiber_cpp_define.hpp:34
acl::fiber_mutex
Definition:
fiber_lock.hpp:12
ACL_FIBER_RWLOCK
struct ACL_FIBER_RWLOCK ACL_FIBER_RWLOCK
Definition:
fiber_lock.h:21
ACL_FIBER_MUTEX
struct ACL_FIBER_MUTEX ACL_FIBER_MUTEX
Definition:
fiber_lock.h:16
acl::fiber_rwlock
Definition:
fiber_lock.hpp:46
include
fiber_cpp
fiber
fiber_lock.hpp
生成于 2021年 九月 10日 星期五 11:14:45 , 为 acl使用
1.8.15