#include<iostream>
#include<thread>
#include<mutex>
std::mutex mtx_one, mtx_two;
void print_one()
{
while(true)
{
mtx_one.lock(); //这句执行结束的时候去锁住mtx_two,而mtx_two被thread_two锁住
mtx_two.lock();
std::cout << "print_one" << std::endl;
mtx_two.unlock();
mtx_one.unlock();
}
}
void print_two()
{
while (true)
{
mtx_two.lock();//这句执行结束的时候去锁住mtx_one,而mtx_one被thread_one锁住
mtx_one.lock();
std::cout << "print_two" << std::endl;
mtx_one.unlock();
mtx_two.unlock();
}
}
int main()
{
std::thread thread_one(print_one);
std::thread thread_two(print_two);
std::cout << "watiing two thrads finished" << std::endl;
thread_two.join();
thread_one.join();
return 0;
}