多线程队列模型
Posted share-ideas
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了多线程队列模型相关的知识,希望对你有一定的参考价值。
template <typename T> class Queue private: std::queue<T> q; pthread_mutex_t q_mutex; pthread_cond_t q_cond; public: Queue() pthread_mutex_init(&q_mutex, NULL); pthread_cond_init(&q_cond, NULL); virtual ~Queue() pthread_mutex_destroy(&q_mutex); pthread_cond_destroy(&q_cond); // 插入 void insert(const T& e) pthread_mutex_lock(&q_mutex); q.push(e); pthread_cond_signal(&q_cond); pthread_mutex_unlock(&q_mutex); // 取数据,队列空则阻塞 void take(T& e) pthread_mutex_lock(&q_mutex); while(q.empty()) pthread_cond_wait(&q_cond, &q_mutex) e = q.front(); q.pop(); pthread_mutex_unlock(&q_mutex); // 取数据,队列空则返回 bool pull(T& e) boot ret = false; pthread_mutex_lock(&q_mutex); while(!q.empty()) e = q.front(); q.pop(); ret = true; pthread_mutex_unlock(&q_mutex); return ret; ;
以上是关于多线程队列模型的主要内容,如果未能解决你的问题,请参考以下文章