织梦建站教程下载,wordpress文章到qq群,网站可以个人备案吗,新闻热点事件2024最新最近在公司负责一个线程池的模块#xff0c;里面用到了boost库中的mutex、condition_variable与mutex::scoped_lock#xff0c;在此总结下线程池在使用时的方式和要点#xff0c;这里记录了线程之间的通信方式#xff0c;希望对学习线程之间(同一个进程)通信的同志们有所帮…最近在公司负责一个线程池的模块里面用到了boost库中的mutex、condition_variable与mutex::scoped_lock在此总结下线程池在使用时的方式和要点这里记录了线程之间的通信方式希望对学习线程之间(同一个进程)通信的同志们有所帮助。
线程之间(在同一个进程)的通信方式信号量mutex条件变量和读写锁。
class Condition {public:Condition() : count(0) { }virtual ~Condition() { }void Increase() {boost::mutex::scoped_lock lock(mutex); count;}void Decrease() {boost::mutex::scoped_lock lock(mutex);-- count;cond.notify_all(); //通知所有的线程}void Wait() {boost::mutex::scoped_lock lock(mutex);while (count 0) {cond.wait(lock);}}private:boost::condition_variable cond; //条件变量boost::mutex mutex;int32_t count;};
如果没有boost库可以使用std::mutex, std::condition_variable代替本人建议使用std标准库中的。