Dans leur exemple l'utilisation de std::condition_variable
ils ont essentiellement
std::mutex m;
std::condition_variable cv;
bool ready = false;
void worker_thread()
{
// Wait until main() sends data
std::unique_lock<std::mutex> lk(m);
cv.wait(lk, []{return ready;});
// more ...
}
int main()
{
std::thread worker(worker_thread);
data = "Example data";
// send data to the worker thread
{
std::lock_guard<std::mutex> lk(m);
ready = true;
}
cv.notify_one();
// more...
}
Mon problème est maintenant la variable ready
qui n'est pas déclarée std::atomic*
.
Pourquoi cela n'introduit-il pas une condition de course en cas de réveil intempestif ?