================ Lösungsvorschlag ================ Die gewünschte RAII-Klasse kann recht einfach formuliert werden: ---- CODE (type=cpp) ---------------------------------------------------------- struct Guard { Guard(std::mutex& mutex) : mutex(mutex) { mutex.lock(); } ~Guard() { mutex.unlock(); } std::mutex& mutex; }; ------------------------------------------------------------------------------- Dann vereinfacht sich die `gen()`-Methode: ---- CODE (type=cpp) ---------------------------------------------------------- double gen() { Guard guard(mutex); return uniform(mt); } ------------------------------------------------------------------------------- Es dürfte nicht sehr überraschen, dass es eine entsprechende Klasse in der Standardbibliothek für C++ bereits gibt. Sie nennt sich `std::lock_guard` und erhält die Mutex-Klasse als Template-Parameter: ---- CODE (type=cpp) ---------------------------------------------------------- double gen() { std::lock_guard guard(mutex); return uniform(mt); } ------------------------------------------------------------------------------- :import:session15/random_init9.cpp :navigate: up -> doc:index back -> doc:session15/page01 next -> doc:session15/page03