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  */
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  */
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
#define FIBER_CPP_API
struct ACL_FIBER_RWLOCK ACL_FIBER_RWLOCK
Definition: fiber_lock.h:21
struct ACL_FIBER_MUTEX ACL_FIBER_MUTEX
Definition: fiber_lock.h:16