acl
3.5.3.0
|
#include <mbox.hpp>
Public 成员函数 | |
mbox (bool free_obj=true, bool mpsc=true) | |
~mbox (void) | |
bool | push (T *t, bool dummy=false) |
T * | pop (int timeout=-1, bool *success=NULL) |
size_t | push_count (void) const |
size_t | pop_count (void) const |
额外继承的成员函数 | |
Protected 成员函数 继承自 acl::acl::noncopyable | |
noncopyable () | |
~noncopyable () | |
可用于在线程之间、协程之间进行通信的类,内部实现采用无锁队列 + IO 通信相 结合方式实现
示例:
class myobj { public: myobj(void) {} ~myobj(void) {}
void run(void) { printf("hello world!\r\n"); } };
acl::mbox<myobj> mbox;
void thread_producer(void) { myobj* o = new myobj; mbox.push(o); }
void thread_consumer(void) { myobj* o = mbox.pop(); o->run(); delete o; }
构造方法
free_obj | {bool} 当 tbox 销毁时,是否自动检查并释放 未被消费的动态对象 |
mpsc | {bool} 是否为多生产者-单消费者模式 |
|
inline |
接收消息对象
timeout | {int} >= 0 时设置读等待超时时间(毫秒级别),否则 永远等待直到读到消息对象或出错 |
success | {bool*} 可以用于辅助确定读操作是否成功 |
|
inline |
统计当前已经接收到的消息数
|
inline |
发送消息对象
t | {T*} 非空消息对象 |
dummy | {bool} 目前无任何用处,仅是为了与 tbox 接口一致 |
|
inline |
统计当前已经发送的消息数