acl
3.5.3.0
|
#include <fiber_tbox.hpp>
Public 成员函数 | |
fiber_tbox (bool free_obj=true) | |
~fiber_tbox (void) | |
void | clear (bool free_obj=false) |
bool | push (T *t, bool notify_first=true) |
T * | pop (int wait_ms=-1, bool *found=NULL) |
size_t | size (void) const |
void | lock (void) |
void | unlock (void) |
用于协程之间,线程之间以及协程与线程之间的消息通信,通过协程条件变量 及协程事件锁实现
示例:
class myobj { public: myobj(void) {} ~myobj(void) {}
void test(void) { printf("hello world\r\n"); } };
acl::fiber_tbox<myobj> fiber_tbox;
void thread_producer(void) { myobj* o = new myobj; fiber_tbox.push(o); }
void thread_consumer(void) { myobj* o = fiber_tbox.pop(); o->test(); delete o; }
在文件 fiber_tbox.hpp 第 42 行定义.
|
inline |
|
inline |
|
inline |
清理消息队列中未被消费的消息对象
free_obj | {bool} 释放调用 delete 方法删除消息对象 |
在文件 fiber_tbox.hpp 第 61 行定义.
被这些函数引用 acl::fiber_tbox< T >::~fiber_tbox().
|
inline |
|
inline |
接收消息对象
wait_ms | {int} >= 0 时设置等待超时时间(毫秒级别), 否则永远等待直到读到消息对象或出错 |
found | {bool*} 非空时用来存放是否获得了一个消息对象,主要用在 当允许传递空对象时的检查 |
在文件 fiber_tbox.hpp 第 127 行定义.
引用了 acl::fiber_event::notify(), acl::fiber_cond::wait() , 以及 acl::fiber_event::wait().
被这些函数引用 acl::go_fiber::operator<() , 以及 acl::go_fiber::operator<<().
|
inline |
发送消息对象
t | {T*} 非空消息对象 |
notify_first | {bool} 如果本参数为 true,则内部添加完消息后 采用先通知后解锁方式,否则采用先解锁后通知方式,当 fiber_tbox 对象 的生存周期比较长时,该参数设为 false 的效率更高,如果 fiber_tbox 对象的生存周期较短(如:等待者调用 pop 后直接销毁 fiber_tbox 对象), 则本参数应该设为 true,以避免 push 者还没有完全返回前因 fiber_tbox 对象被提前销毁而造成内存非法访问 |
在文件 fiber_tbox.hpp 第 84 行定义.
引用了 acl::fiber_cond::notify(), acl::fiber_event::notify() , 以及 acl::fiber_event::wait().
被这些函数引用 acl::go_fiber::operator<() , 以及 acl::go_fiber::operator<<().
|
inline |
|
inline |