1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
| // std::lock example #include <iostream> // std::cout #include <thread> // std::thread #include <mutex> // std::mutex, std::lock std::mutex foo,bar; void task_a () { // foo.lock(); bar.lock(); // replaced by: std::lock (foo,bar); std::cout << "task a\n"; foo.unlock(); bar.unlock(); } void task_b () { // bar.lock(); foo.lock(); // replaced by: std::lock (bar,foo); std::cout << "task b\n"; bar.unlock(); foo.unlock(); } int main () { std::thread th1 (task_a); std::thread th2 (task_b); th1.join(); th2.join(); return 0; }
|