librf
|
可传递数据的模板信号量。 更多...
Public 成员函数 | |
channel_t (size_t cache_size=1) | |
构造函数。 更多... | |
size_t | capacity () const noexcept |
获得缓存数量。 | |
read_awaiter | operator co_await () const noexcept |
在协程中从channel_t里读取一个数据。 更多... | |
read_awaiter | read () const noexcept |
在协程中从channel_t里读取一个数据 更多... | |
template<class U > | |
write_awaiter | operator<< (U &&val) const noexcept(std::is_move_constructible_v< U >) |
在协程中向channel_t里写入一个数据。 更多... | |
template<class U > | |
write_awaiter | write (U &&val) const noexcept(std::is_move_constructible_v< U >) |
在协程中向channel_t里写入一个数据。 更多... | |
可传递数据的模板信号量。
_Ty | 传递的数据类型。要求此类型至少支持移动构造和移动赋值。 |
_Optional | 内部是否采用std::optional<>来存数据。 默认不是POD类型则采用std::optional<>。如果channel缓存的元素不能凭空产生,或者产生代价较大,则推荐将此参数设置为true,从而减小不必要的开销。 |
_OptimizationThread | 针对多线程优化。目前此算法提升效率不稳定,需要自行根据实际情况决定。 |
resumef::channel_t< _Ty, _Optional, _OptimizationThread >::channel_t | ( | size_t | cache_size = 1 | ) |
构造函数。
cache_size | 缓存的数量。0 表示内部无缓存。 |
|
noexcept |
在协程中从channel_t里读取一个数据。
|
noexcept |
在协程中向channel_t里写入一个数据。
|
noexcept |
在协程中从channel_t里读取一个数据
如果没有写入数据,则会阻塞协程。
|
noexcept |
在协程中向channel_t里写入一个数据。
在没有读操作等待时,且数据缓冲区满的情况下,则会阻塞协程。
val | 写入的数据。必须是可以成功构造_Ty(val)的类型。 |