- 294 名前:デフォルトの名無しさん [2023/08/06(日) 22:11:54.17 ID:0QxiCITa.net]
- G:
#include <thread> #include <chrono> using namespace std; int main () { using Lock = lock_guard<mutex>; mutex m0; mutex m1; thread th0 { [&] () { Lock l0 {m0}; this_thread::sleep_for (chrono::seconds {1}); Lock l1 {m1}; } }; thread th1 { [&] () { Lock l0 {m0}; Lock l1 {m1}; } }; th0.join (); th1.join (); return 0; } G: この修正により、どちらのスレッドも最初にm0をロックし、その後m1をロックします。 このようにすることで、スレッド間のデッドロックを避けることができます。
|

|