#include <thread>
#include <mutex>
#include <iostream>
#include <vector>
void Fun_1();
void Fun_2();
unsigned int counter = 1;
std::mutex mtx;
void my_fun(int i)
{
while (true)
{
std::lock_guard<std::mutex> mtx_locker(mtx);
++counter;
if (counter < 1001)
{
std::cout << "窗口 "<<i<<" 正在卖第 " << counter << " 张票...还剩"<<(1000-counter)<<"张票\n";
}
else
{
break;
}
//std::this_thread::sleep_for(std::chrono::microseconds(1));
}
}
void my_test()
{
std::vector<std::thread *> vt(10);
for(auto i=0;i<10;++i){
vt[i]=new std::thread(my_fun,i+1);
}
for(auto i=0;i<10;++i){
vt[i]->join();
}
for(auto i=0;i<10;++i){
delete vt[i];
}
}
void test()
{
std::thread thrd_1(Fun_1);
std::thread thrd_2(Fun_2);
thrd_1.join();
thrd_2.join();
std::cin.get();
}
void Fun_1()
{
while (true)
{
std::lock_guard<std::mutex> mtx_locker(mtx);
++counter;
if (counter < 1000)
{
std::cout << "Function 1 counting " << counter << "...\n";
}
else
{
break;
}
}
}
void Fun_2()
{
while (true)
{
std::lock_guard<std::mutex> mtx_locker(mtx);
++counter;
if (counter < 1000)
{
std::cout << "Function 2 counting " << counter << "...\n";
}
else
{
break;
}
}
}