#include <mutex>
#include <thread>
#include <iostream>

std::mutex m1, m2;

void loop2()
{
    for(int i = 0; i < 10; ++i) {
        m2.lock();
        std::cout << "Thread 2: " << i << '\n';
        m1.unlock();
    }
}

void loop1()
{
    m2.lock();
    std::thread t2(loop2);
    for(int i = 0; i < 10; ++i) {
        m1.lock();
        std::cout << "Thread 1: " << i << '\n';
        m2.unlock();
    }
    t2.join();
    m2.unlock();

}

int main()
{
    std::thread(loop1).join();
}
