acl
3.5.3.0
|
#include <tbox_array.hpp>
Public 成员函数 | |
tbox_array (bool free_obj=true) | |
~tbox_array (void) | |
void | clear (bool free_obj=false) |
bool | push (T *t, bool notify_first=false) |
T * | pop (int wait_ms=-1, bool *found=NULL) |
size_t | size (void) const |
void | lock (void) |
void | unlock (void) |
额外继承的成员函数 | |
Protected 成员函数 继承自 acl::acl::noncopyable | |
noncopyable () | |
~noncopyable () | |
用于线程之间的消息通信,通过线程条件变量及线程锁实现
示例:
class myobj { public: myobj(void) {} ~myobj(void) {}
void test(void) { printf("hello world\r\n"); } };
acl::tbox_array<myobj> tbox;
void thread_producer(void) { myobj* o = new myobj; tbox.push(o); }
void thread_consumer(void) { myobj* o = tbox.pop(); o->test(); delete o; }
在文件 tbox_array.hpp 第 44 行定义.
|
inline |
|
inline |
|
inline |
清理消息队列中未被消费的消息对象
free_obj | {bool} 释放调用 delete 方法删除消息对象 |
在文件 tbox_array.hpp 第 73 行定义.
被这些函数引用 acl::tbox_array< T >::~tbox_array().
|
inline |
|
inline |
接收消息对象
wait_ms | {int} >= 0 时设置等待超时时间(毫秒级别), 否则永远等待直到读到消息对象或出错 |
found | {bool*} 非空时用来存放是否获得了一个消息对象,主要用在 当允许传递空对象时的检查 |
在文件 tbox_array.hpp 第 148 行定义.
引用了 acl::thread_mutex::lock(), acl::thread_mutex::unlock() , 以及 acl::thread_cond::wait().
|
inline |
发送消息对象,本过程是添加完对象后先解锁后通知
t | {T*} 非空消息对象 |
notify_first | {bool} 如果为 true,则先通知后解锁,否则先解锁 后通知,注意二者的区别 |
在文件 tbox_array.hpp 第 89 行定义.
引用了 acl::thread_mutex::lock(), acl::thread_cond::notify() , 以及 acl::thread_mutex::unlock().
|
inline |
|
inline |