C++ 生产者消费者,利用队列

#include <iostream>
#include <thread>
#include <list>
#include <queue>
#include <mutex>
#include <random>
#include <Windows.h>
using namespace std;
uniform_int_distribution<int> u(1, 100);
default_random_engine e;
mutex mtx;

void push_ivec(queue<int> *a)
{
	
	for (int i = 0; i < 100; i++)
	{
		
		int temp = u(e);
		cout << "push: " << temp << endl;
		a->push(temp);
		cout << "size = " << a->size() << endl;
	}
	
}

void get_ivec(queue<int> *a)
{
	
	for (int i = 0; i < 100; i++)
	{
		//cout << "size = " << a->size() << endl;
		if (a->size() != 0)
		{
			
			int temp = a->front();
			a->pop();
			cout << "pop: " << temp << endl;
			cout << "size = " << a->size() << endl;
		}
	}
	
}


void main()
{
	queue<int> a;
	thread p1(push_ivec, &a);
	//thread p2(push_ivec, &a);
	Sleep(10);
	thread g1(get_ivec, &a);
	//thread g2(get_ivec, &a);
	//thread g3(get_ivec, &a);
	p1.join();
	
	//p2.join();
	g1.join();
	//g2.join();
	//g3.join();
	//cout << "size = " << a.size() << endl;
	cout << "-------------------" << endl;
	cout << "size = " << a.size() << endl;
	
	

}

  

posted on 2014-01-17 19:57  WK23  阅读(545)  评论(0)    收藏  举报

导航