diff --git a/src/detsim.cpp b/src/detsim.cpp index dd8e95f5414b9a42a06e01c30e71fa9194073918..8c784212d359fd7780cf96cd5b0e9a97118e66f1 100644 --- a/src/detsim.cpp +++ b/src/detsim.cpp @@ -38,9 +38,9 @@ void worker(const std::string& dataHandlerName, timed::anchor idleAnchor("idle"); timed::anchor burstAnchor("burst"); timed::anchor waitAnchor("wait"); - nArmed++; { std::unique_lock<decltype(syncMutexToMain)> lock(syncMutexToMain); + nArmed++; syncCvToMain.notify_one(); } { @@ -92,6 +92,7 @@ void worker(const std::string& dataHandlerName, waitAnchor.write(outputDir, threadNo); outputHandler->write(outputDir, threadNo); } catch (const std::exception& e) { + std::unique_lock<decltype(syncMutexToMain)> lock(syncMutexToMain); nArmed++; syncCvToMain.notify_one(); std::cerr << "Oops: " << e.what() << "\n"; @@ -136,6 +137,9 @@ int main(int argc, const char*argv[]) { while (nArmed < nThreads) { syncCvToMain.wait(lock); } + } + { + std::unique_lock<decltype(syncMutexToWorker)> lock(syncMutexToWorker); syncCvToWorker.notify_all(); } auto firstThreadStart = std::chrono::system_clock::now();