void worker_thread()
{
// Wait until main() sends data
- std::unique_lock lk(m);
+ std::unique_lock<std::mutex> lk(m);
cv.wait(lk, []{return ready;});
// after the wait, we own the lock.
data = "Example data";
// send data to the worker thread
{
- std::lock_guard lk(m);
+ std::lock_guard<std::mutex> lk(m);
ready = true;
std::cout << "main() signals data ready for processing\n";
}
// wait for the worker
{
- std::unique_lock lk(m);
+ std::unique_lock<std::mutex> lk(m);
cv.wait(lk, []{return processed;});
}
std::cout << "Back in main(), data = " << data << '\n';