mirror of
https://gitee.com/acl-dev/acl.git
synced 2024-12-14 08:50:53 +08:00
40 lines
800 B
C++
40 lines
800 B
C++
#pragma once
|
|
|
|
struct ACL_FIBER_EVENT;
|
|
|
|
namespace acl {
|
|
|
|
/**
|
|
* 可用于协程之间、线程之间以及协程与线程之间,通过事件等待/通知方式进行同步的
|
|
* 的事件混合锁
|
|
*/
|
|
class fiber_event
|
|
{
|
|
public:
|
|
fiber_event(void);
|
|
~fiber_event(void);
|
|
|
|
/**
|
|
* 等待事件锁
|
|
* @return {bool} 返回 true 表示加锁成功,否则表示内部出错
|
|
*/
|
|
bool wait(void);
|
|
|
|
/**
|
|
* 尝试等待事件锁
|
|
* @return {bool} 返回 true 表示加锁成功,否则表示锁正在被占用
|
|
*/
|
|
bool trywait(void);
|
|
|
|
/**
|
|
* 事件锁拥有者释放事件锁并通知等待者
|
|
* @return {bool} 返回 true 表示通知成功,否则表示内部出错
|
|
*/
|
|
bool notify(void);
|
|
|
|
private:
|
|
ACL_FIBER_EVENT* event_;
|
|
};
|
|
|
|
} // namespace acl
|