librf
Public 成员函数 | 所有成员列表
resumef::event_t结构体 参考

用于协程的事件。 更多...

Public 成员函数

 event_t (bool initially=false)
 构造一个事件。 更多...
 
 event_t (std::adopt_lock_t)
 构造一个无效的事件。 更多...
 
 ~event_t ()
 采用shared_ptr<>来保存内部的事件实现。故不必担心正在被等待的协程,因为事件提前销毁而出现异常。
 
void signal_all () const noexcept
 向所有正在等待的协程触发一次信号。 更多...
 
void signal () const noexcept
 触发一次信号。 更多...
 
void reset () const noexcept
 重置信号。 更多...
 
awaiter operator co_await () const noexcept
 在协程中等待信号触发。 更多...
 
awaiter wait () const noexcept
 在协程中等待信号触发。 更多...
 
template<class _Rep , class _Period >
timeout_awaiter wait_for (const std::chrono::duration< _Rep, _Period > &dt) const noexcept
 在协程中等待信号触发,直到超时。 更多...
 
template<class _Clock , class _Duration >
timeout_awaiter wait_until (const std::chrono::time_point< _Clock, _Duration > &tp) const noexcept
 在协程中等待信号触发,直到超时。 更多...
 

详细描述

用于协程的事件。

用于同步不同线程里运行的协程。

构造及析构函数说明

◆ event_t() [1/2]

resumef::event_t::event_t ( bool  initially = false)

构造一个事件。

参数
initially初始是否触发一次信号。

◆ event_t() [2/2]

resumef::event_t::event_t ( std::adopt_lock_t  )

构造一个无效的事件。

如果用于后续保存另外一个事件,则应当使用此构造函数,便于节省一次不必要的内部初始化。

成员函数说明

◆ operator co_await()

awaiter resumef::event_t::operator co_await ( ) const
noexcept

在协程中等待信号触发。

参见
等同于co_await wait()
注意
只能在协程中调用。

◆ reset()

void resumef::event_t::reset ( ) const
noexcept

重置信号。

注意
非协程中也可以使用。

◆ signal()

void resumef::event_t::signal ( ) const
noexcept

触发一次信号。

如果有正在等待的协程,则最先等待的协程会被唤醒。
如果没有正在等待的协程,则信号触发次数加一。之后有协程调用wait(),则会直接返回。

注意
非协程中也可以使用。

◆ signal_all()

void resumef::event_t::signal_all ( ) const
noexcept

向所有正在等待的协程触发一次信号。

注意
非协程中也可以使用。

◆ wait()

awaiter resumef::event_t::wait ( ) const
noexcept

在协程中等待信号触发。

如果信号已经触发,则立即返回true。
否则,当前协程被阻塞,直到信号被触发后唤醒。 消耗一次信号触发次数。

返回值
bool[co_await] 返回是否等到了信号
注意
只能在协程中调用。

◆ wait_for()

template<class _Rep , class _Period >
timeout_awaiter resumef::event_t::wait_for ( const std::chrono::duration< _Rep, _Period > &  dt) const
noexcept

在协程中等待信号触发,直到超时。

如果信号已经触发,则立即返回true。
否则,当前协程被阻塞,直到信号被触发后,或者超时后唤醒。 如果等到了信号,则消耗一次信号触发次数。

参数
dt超时时长
返回值
bool[co_await] 等到了信号返回true,超时了返回false。
注意
只能在协程中调用。

◆ wait_until()

template<class _Clock , class _Duration >
timeout_awaiter resumef::event_t::wait_until ( const std::chrono::time_point< _Clock, _Duration > &  tp) const
noexcept

在协程中等待信号触发,直到超时。

如果信号已经触发,则立即返回true。
否则,当前协程被阻塞,直到信号被触发后,或者超时后唤醒。 如果等到了信号,则消耗一次信号触发次数。

参数
tp超时时刻
返回值
bool[co_await] 等到了信号返回true,超时了返回false。
注意
只能在协程中调用。

该结构体的文档由以下文件生成: