Voici mon parcours, pouvez-vous m'aider maintenant en apportant des précisions à ces éléments ?
1) worker_thread est lancée dans le thread worker de manière asynchrone de manière non reportée
2) il demande le mutex avec son unique_lock .... déjà ici, j'ai un doute, car que se passe-t-il si en même dans le main (si je comprends bien, on peut avoir deux threads qui bloquent un mutex exactement en même temps ? ) , la section de code
{
std::lock_guard<std::mutex> lk(m);
ready = true;
std::cout << "main() signals data ready for processing\n";
}
demande le mutex exactement en même temps ?
3) supposons que ce soit le unique_lock : alors au moment du cv.wait , il lâche le mutex et le thread patiente
4) puisque le mutex est lâché, on peut rentrer dans la section de code que je viens de citer (même si ce que je dis ne me paraît pas sûr)
5) puis le cv.notify_one réveille le thread worker qui reprend car la condition ready est true, et le thread worker reprend le mutex.
6) Et c'est là que j'ai ma 3ème question : pourquoi faire le unlock sur lk avant le notify_one ? est-ce pour que cv ne soit pas modifié dans deux régions qui demandent simultanément le mutex ?
Si oui, ce n'est pas ce que dit cppreference qui parle de réveil. Je ne comprends pas ce que ça veut dire : "the waiting thread only to block again"
- Edité par pseudo-simple 11 juillet 2019 à 16:18:40
Encore une fois, tu t'attaques à des problèmes qui volent très largement au dessus de tes capacités de compréhensions actuelles.
Quand finiras tu donc par comprendre que, s'il n'y a rien à vouloir dépasser ses limite pour évoluer, à la condition expresse de se fixer des objectifs accessibles, vouloir "bruler les étapes" en s'attaquant à des problèmes auxquels on est incapable de donner le moindre début d'explication n'est qu'une perte de temps teintée de masochisme ?
Encore une fois, tu te retrouves à tenter l'escalade de l'Everest, alors que tu es encore incapable de gravir la coline derrière chez toi sans devoir t'arrêter sans reprendre ton souffle. Comment peux tu espérer y arriver sans risquer d'y perdre la vie?
- Edité par koala01 12 juillet 2019 à 0:13:59
Ce qui se conçoit bien s'énonce clairement. Et les mots pour le dire viennent aisément.Mon nouveau livre : Coder efficacement - Bonnes pratiques et erreurs à éviter (en C++)Avant de faire ce que tu ne pourras défaire, penses à tout ce que tu ne pourras plus faire une fois que tu l'auras fait
Discord NaN. Mon site.
Discord NaN. Mon site.