acl
3.5.3.0
fiber_event.hpp
浏览该文件的文档.
1
#pragma once
2
#include "
fiber_cpp_define.hpp
"
3
4
struct
ACL_FIBER_EVENT
;
5
6
namespace
acl
{
7
8
/**
9
* 可用于协程之间、线程之间以及协程与线程之间,通过事件等待/通知方式进行同步的
10
* 的事件混合锁
11
*/
12
class
FIBER_CPP_API
fiber_event
13
{
14
public
:
15
/**
16
* 构造方法
17
* @param use_mutex {bool} 在用在多线程之间进行事件同步时,如果启动的
18
* 的线程数较多(成百上千个线程),则此标志应设为 true 以便于内部在
19
* 同步内部对象时使用线程互斥锁进行保护,以避免形成惊群现象,如果启动
20
* 的线程数较多但该标志为 false,则内部使用原子数进行同步保护,很容易
21
* 造成惊群问题;当启动的线程数较(几十个左右),则此参数可以设为 false
22
* 以告之内部使用原子数进行同步保护
23
* @param fatal_on_error {bool} 内部发生错误时是否直接崩溃,以便于开发
24
* 人员进行错误调试
25
*/
26
fiber_event
(
bool
use_mutex =
true
,
bool
fatal_on_error =
true
);
27
~
fiber_event
(
void
);
28
29
/**
30
* 等待事件锁
31
* @return {bool} 返回 true 表示加锁成功,否则表示内部出错
32
*/
33
bool
wait(
void
);
34
35
/**
36
* 尝试等待事件锁
37
* @return {bool} 返回 true 表示加锁成功,否则表示锁正在被占用
38
*/
39
bool
trywait(
void
);
40
41
/**
42
* 事件锁拥有者释放事件锁并通知等待者
43
* @return {bool} 返回 true 表示通知成功,否则表示内部出错
44
*/
45
bool
notify(
void
);
46
47
public
:
48
/**
49
* 返回 C 版本的事件对象
50
* @return {ACL_FIBER_EVENT*}
51
*/
52
ACL_FIBER_EVENT
*
get_event
(
void
)
const
53
{
54
return
event_;
55
}
56
57
private
:
58
ACL_FIBER_EVENT
* event_;
59
60
fiber_event
(
const
fiber_event
&);
61
void
operator=(
const
fiber_event
&);
62
};
63
64
}
// namespace acl
65
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_event::get_event
ACL_FIBER_EVENT * get_event(void) const
Definition:
fiber_event.hpp:52
ACL_FIBER_EVENT
struct ACL_FIBER_EVENT ACL_FIBER_EVENT
Definition:
fiber_event.h:16
acl::fiber_event
Definition:
fiber_event.hpp:12
include
fiber_cpp
fiber
fiber_event.hpp
生成于 2021年 九月 10日 星期五 11:14:45 , 为 acl使用
1.8.15