acl  3.5.3.0
acl::fiber_event类 参考

#include <fiber_event.hpp>

+ acl::fiber_event 的协作图:

Public 成员函数

 fiber_event (bool use_mutex=true, bool fatal_on_error=true)
 
 ~fiber_event (void)
 
bool wait (void)
 
bool trywait (void)
 
bool notify (void)
 
ACL_FIBER_EVENTget_event (void) const
 

详细描述

可用于协程之间、线程之间以及协程与线程之间,通过事件等待/通知方式进行同步的 的事件混合锁

在文件 fiber_event.hpp12 行定义.

构造及析构函数说明

◆ fiber_event()

acl::fiber_event::fiber_event ( bool  use_mutex = true,
bool  fatal_on_error = true 
)

构造方法

参数
use_mutex{bool} 在用在多线程之间进行事件同步时,如果启动的 的线程数较多(成百上千个线程),则此标志应设为 true 以便于内部在 同步内部对象时使用线程互斥锁进行保护,以避免形成惊群现象,如果启动 的线程数较多但该标志为 false,则内部使用原子数进行同步保护,很容易 造成惊群问题;当启动的线程数较(几十个左右),则此参数可以设为 false 以告之内部使用原子数进行同步保护
fatal_on_error{bool} 内部发生错误时是否直接崩溃,以便于开发 人员进行错误调试

◆ ~fiber_event()

acl::fiber_event::~fiber_event ( void  )

成员函数说明

◆ get_event()

ACL_FIBER_EVENT* acl::fiber_event::get_event ( void  ) const
inline

返回 C 版本的事件对象

返回
{ACL_FIBER_EVENT*}

在文件 fiber_event.hpp52 行定义.

53  {
54  return event_;
55  }

◆ notify()

bool acl::fiber_event::notify ( void  )

事件锁拥有者释放事件锁并通知等待者

返回
{bool} 返回 true 表示通知成功,否则表示内部出错

被这些函数引用 acl::fiber_tbox< T >::pop(), acl::fiber_tbox< T >::push() , 以及 acl::fiber_tbox< T >::unlock().

+ 这是这个函数的调用关系图:

◆ trywait()

bool acl::fiber_event::trywait ( void  )

尝试等待事件锁

返回
{bool} 返回 true 表示加锁成功,否则表示锁正在被占用

◆ wait()

bool acl::fiber_event::wait ( void  )

等待事件锁

返回
{bool} 返回 true 表示加锁成功,否则表示内部出错

被这些函数引用 acl::fiber_tbox< T >::lock(), acl::fiber_tbox< T >::pop() , 以及 acl::fiber_tbox< T >::push().

+ 这是这个函数的调用关系图:

该类的文档由以下文件生成: