示例#1
0
			/**
			* @brief 把数据压入队列,生产一个数据
			* @param <x> <压入数据>
			* @exception <不会抛出任何异常>
			* @return <无>
			* @note <线程安全,可并发多次调用>
			* @remarks <无>
			*/
			void put(T &&x)
			{
				{
					AutoLock lock(mutex_);
					queue_.push_back(std::move(x));
				}

				not_empty_.notify_one();
			}
示例#2
0
			void put(const T &x)
			{
				{
					AutoLock lock(mutex_);
					queue_.emplace_back(x);
				}

				not_empty_.notify_one();
			}
示例#3
0
			/**
			* @brief 把数据弹出队列,消费一个数据
			* @param <无>
			* @exception <不会抛出任何异常>
			* @return <弹出一个数据>
			* @note <线程安全,可并发多次调用>
			* @remarks <无>
			*/
			T get()
			{
				T front;
				{
					AutoLock lock(mutex_);
					while(queue_.empty())
					{
						not_empty_.wait(lock);
					}
					assert(!queue_.empty());
					front = std::move(queue_.front());
					queue_.pop_front();
				}

				return front;
			}