mirror of
https://gitee.com/acl-dev/acl.git
synced 2024-12-14 00:40:55 +08:00
50 lines
948 B
C++
50 lines
948 B
C++
#pragma once
|
||
#include "fiber_cpp_define.hpp"
|
||
|
||
struct ACL_FIBER_COND;
|
||
|
||
namespace acl {
|
||
|
||
class fiber_mutex;
|
||
|
||
/**
|
||
* 可用在协程之间,线程之间,协程与线程之间的条件变量
|
||
*/
|
||
class FIBER_CPP_API fiber_cond {
|
||
public:
|
||
fiber_cond(void);
|
||
~fiber_cond(void);
|
||
|
||
/**
|
||
* 等待条件变量事件被触发
|
||
* @param mutex {fiber_mutex&}
|
||
* @param timeout {int} 超时等待时间(毫秒)
|
||
* @return {bool} 成功时返回 true,否则返回 false 表示超时
|
||
*/
|
||
bool wait(fiber_mutex& mutex, int timeout = -1);
|
||
|
||
/**
|
||
* 唤醒在条件变量上的等待者,如果没有等待者则直接返回,运行行为和
|
||
* 线程条件变量类似
|
||
* @return {bool} 成功返回 true,否则返回 false 表示失败
|
||
*/
|
||
bool notify(void);
|
||
|
||
public:
|
||
/**
|
||
* 返回 C 版本的条件变量对象
|
||
* @return {ACL_FIBER_COND*}
|
||
*/
|
||
ACL_FIBER_COND* get_cond(void) const {
|
||
return cond_;
|
||
}
|
||
|
||
private:
|
||
ACL_FIBER_COND* cond_;
|
||
|
||
fiber_cond(const fiber_cond&);
|
||
void operator=(const fiber_cond&);
|
||
};
|
||
|
||
}
|