// // 7.3.critical.section.b.cpp // chapter 7 parallelism and concurrency // modern c++ tutorial // // created by changkun at changkun.de // https://github.com/changkun/modern-cpp-tutorial // #include #include int v = 1; void critical_section(int change_v) { static std::mutex mtx; std::unique_lock lock(mtx); // do contention operations v = change_v; std::cout << v << std::endl; // release the lock lock.unlock(); // during this period, // others are allowed to acquire v // start another group of contention operations // lock again lock.lock(); v += 1; std::cout << v << std::endl; } int main() { std::thread t1(critical_section, 2), t2(critical_section, 3); t1.join(); t2.join(); return 0; }