J'ai écrit un code simple où je prends un unique_lock et déverrouille le mutex au lieu d'appeler le déverrouillage sur le verrou lui-même. Lorsque le premier thread entre dans la section critique et appelle my_mutex.unlock(), de nombreux autres threads entrent ensemble dans la section critique.L'appel déverrouillé sur un mutex associé à un unique_lock provoque un comportement indéfini
std::mutex my_mutex;
void sample() {
std::unique_lock<std::mutex> lock(my_mutex);
// Critical section
my_mutex.unlock();
}
Pourquoi cela se produit-il? Est-ce mal d'appeler le déverrouillage sur un mutex tenu par un unique_lock? Merci!
Merci! En fait, je n'avais pas de mutex local dans mon code actuel. Je vais mettre à jour le code dans la question. – kwadhwa