. . . .
C++ 多线程编程总结
在开发C++程序时,一般在吞吐量、并发、实时性上有较高的要求。设计C++程序时,总结起来可以从如下几点提高效率:
• • •
l 并发 l 异步 l 缓存
下面将我平常工作中遇到一些问题例举一二,其设计思想无非以上三点。
1任务队列
1.1 以生产者-消费者模型设计任务队列
生产者-消费者模型是人们非常熟悉的模型,比如在某个服务器程序中,当User数据被逻辑模块修改后,就产生一个更新数据库的任务(produce),投递给IO模块任务队列,IO模块从任务队列中取出任务执行sql操作(consume)。 设计通用的任务队列,示例代码如下: 详细实现可参见:
ffown.googlecode./svn/trunk/fflib/include/detail/task_queue_impl.h ?
void task_queue_t::produce(const task_t& task_ {
lock_guard_t lock(m_mutex; if (m_tasklist->empty({//! 条件满足唤醒等待线程 m_cond.signal(;
} m_tasklist->push_back(task_;
} int task_queue_t::comsume(task_t& task_{
lock_guard_t lock(m_mutex; while (m_tasklist->empty(//! 当没有作业时,就等待直到条件满足被唤醒{ if (false == m_flag{ return -1;
}