GraceFt v2.3
开源图形引擎 EGE(Easy Graphics Engine) 的高层封装库
 
载入中...
搜索中...
未找到
GFt::Channel< T > 模板类 参考

通道模板类 更多...

#include <Channel.hpp>

Public 成员函数

 Channel (std::size_t capacity=1ull)
 构造函数
 
 ~Channel ()=default
 
T recv ()
 从通道接收数据
 
void send (const T &data)
 发送数据到通道
 
void send (T &&data)
 发送数据到通道
 
bool try_recv (T &data)
 尝试从通道接收数据
 
bool try_send (const T &data)
 尝试发送数据到通道
 
bool try_send (T &&data)
 尝试发送数据到通道
 

详细描述

template<typename T>
class GFt::Channel< T >

通道模板类

模板参数
T通道中元素的类型
注解
此类是线程安全的,可用于多线程环境下线程间的数据交换

构造及析构函数说明

◆ Channel()

template<typename T >
GFt::Channel< T >::Channel ( std::size_t capacity = 1ull)
inline

构造函数

参数
capacity通道的容量,默认为1

◆ ~Channel()

template<typename T >
GFt::Channel< T >::~Channel ( )
default

成员函数说明

◆ recv()

template<typename T >
T GFt::Channel< T >::recv ( )
inline

从通道接收数据

返回
接收到的数据

若通道为空,则线程会被阻塞,直到有数据到来

◆ send() [1/2]

template<typename T >
void GFt::Channel< T >::send ( const T & data)
inline

发送数据到通道

参数
data要发送的数据

若通道已满,则线程会被阻塞,直到有空余位置

◆ send() [2/2]

template<typename T >
void GFt::Channel< T >::send ( T && data)
inline

发送数据到通道

参数
data要发送的数据
参见
send()

◆ try_recv()

template<typename T >
bool GFt::Channel< T >::try_recv ( T & data)
inline

尝试从通道接收数据

参数
data接收到的数据
返回
若成功接收,则返回true,否则返回false

若通道为空,则不会接收数据,并返回false

◆ try_send() [1/2]

template<typename T >
bool GFt::Channel< T >::try_send ( const T & data)
inline

尝试发送数据到通道

参数
data要发送的数据
返回
若成功发送,则返回true,否则返回false

若通道已满,则不会发送数据,并返回false

◆ try_send() [2/2]

template<typename T >
bool GFt::Channel< T >::try_send ( T && data)
inline

尝试发送数据到通道

参数
data要发送的数据
返回
若成功发送,则返回true,否则返回false
参见
try_send()