NexusForce 1.0.0
A rigorously engineered full-stack C++ backend library.
载入中...
搜索中...
未找到
neforce::channel< T > 模板类 参考

有限容量的 CSP 消息通道 更多...

#include <channel.hpp>

Public 成员函数

 channel (size_t capacity=capacity_max)
 构造函数
bool try_write (T value)
 尝试发送消息(非阻塞)
bool write (T value)
 发送消息(阻塞直到空间可用或通道关闭)
bool try_read (T &out)
 尝试读取消息(非阻塞)
bool read (T &out)
 读取消息(阻塞直到有数据或通道关闭)
void close ()
 关闭通道
bool is_closed () const noexcept
 检查通道是否已关闭
size_t size () const noexcept
 当前缓冲消息数量
bool empty () const noexcept
 检查缓冲区是否为空

静态 Public 属性

static constexpr size_t capacity_max = numeric_traits<size_t>::max()
 最大容量常量

详细描述

template<typename T>
class neforce::channel< T >

有限容量的 CSP 消息通道

模板参数
T消息类型

支持多生产者/多消费者的线程安全消息通道。 容量为 0 表示无缓冲(同步握手),capacity_max 表示无上限。

注解
容量耗尽时写入阻塞,无数据时读取阻塞。

在文件 channel.hpp34 行定义.

构造及析构函数说明

◆ channel()

template<typename T>
neforce::channel< T >::channel ( size_t capacity = capacity_max)
inlineexplicit

构造函数

参数
capacity通道容量,0 表示无缓冲,capacity_max 表示无上限
异常
value_exceptioncapacity_max 容量不合法时抛出

在文件 channel.hpp48 行定义.

引用了 capacity_max.

成员函数说明

◆ close()

template<typename T>
void neforce::channel< T >::close ( )
inline

关闭通道

关闭后不再接受新消息,唤醒所有等待的读写线程。 已缓冲的数据仍可读取。

在文件 channel.hpp134 行定义.

◆ empty()

template<typename T>
bool neforce::channel< T >::empty ( ) const
inlinenodiscardnoexcept

检查缓冲区是否为空

返回
为空返回 true

在文件 channel.hpp162 行定义.

◆ is_closed()

template<typename T>
bool neforce::channel< T >::is_closed ( ) const
inlinenodiscardnoexcept

检查通道是否已关闭

返回
已关闭返回 true

在文件 channel.hpp144 行定义.

◆ read()

template<typename T>
bool neforce::channel< T >::read ( T & out)
inline

读取消息(阻塞直到有数据或通道关闭)

参数
out输出消息
返回
读取成功返回 true,通道关闭且无数据返回 false

在文件 channel.hpp116 行定义.

引用了 neforce::move().

◆ size()

template<typename T>
size_t neforce::channel< T >::size ( ) const
inlinenodiscardnoexcept

当前缓冲消息数量

返回
消息数量

在文件 channel.hpp153 行定义.

◆ try_read()

template<typename T>
bool neforce::channel< T >::try_read ( T & out)
inline

尝试读取消息(非阻塞)

参数
out输出消息
返回
读取成功返回 true,通道空或关闭且无数据返回 false

在文件 channel.hpp100 行定义.

引用了 neforce::move().

◆ try_write()

template<typename T>
bool neforce::channel< T >::try_write ( T value)
inline

尝试发送消息(非阻塞)

参数
value要发送的消息
返回
发送成功返回 true,通道已满或已关闭返回 false

在文件 channel.hpp64 行定义.

引用了 neforce::move().

◆ write()

template<typename T>
bool neforce::channel< T >::write ( T value)
inline

发送消息(阻塞直到空间可用或通道关闭)

参数
value要发送的消息
返回
发送成功返回 true,通道关闭返回 false

在文件 channel.hpp82 行定义.

引用了 neforce::move().


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