#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;
}