RMEU
Messages postés31Date d'inscriptionmercredi 10 avril 2013StatutMembreDernière intervention10 novembre 2014
-
10 oct. 2014 à 16:35
cptpingu
Messages postés3837Date d'inscriptiondimanche 12 décembre 2004StatutModérateurDernière intervention28 mars 2023
-
13 oct. 2014 à 12:24
Bonjour,
Je voudrais savoir comment synchroniser 2 threads en utilisant un mutex.
Je sais déjà que je dois créer ce mutex et ensuite faire un WaitForSingleObject sur ce mutex. Quand je l'ai obtenu, je crée la thread secondaire qui elle aussi attend sur le même mutex. Quand je veux lui signaler qu'elle doit effectuer un traitement je dois signaler le mutex (cela revient à faire le Release du Mutex). Quelle fonction dois-je utiliser pour pour libérer ou signaler le mutex ? Les autres solutions sont aussi les bienvenues.
cptpingu
Messages postés3837Date d'inscriptiondimanche 12 décembre 2004StatutModérateurDernière intervention28 mars 2023123 10 oct. 2014 à 18:43
Bonjour.
Quelle langage utilises-tu ? Si c'est du C++, tu peux tout simplement utiliser std::thread et std::mutex (avec std::lock_guard), ça fait partie du standard, et ça sera portable sur n'importe quel OS.
Peux-tu aussi préciser la finalité ? Que cherches-tu à réaliser ? Est-ce un pattern type: producteur-consommateur ?
RMEU
Messages postés31Date d'inscriptionmercredi 10 avril 2013StatutMembreDernière intervention10 novembre 2014 13 oct. 2014 à 12:11
Bonjour,
Le but est simple : je veux créer une thread secondaire qui traite les messages que la thread principale insère dans une queue mémoire. Commnent, en windows, protégér cette queue et comment prévenir la thread secondaire que la thread principale a inséré un message à traiter. Si tu me dis que les Posix Threads fonctionnent en windows, alors le problème est résolu.
Si tu es en C++, et que tu as accès à C++11, alors tout est dans le langage. Si tu es en C++03, tu n'y a pas accès, et il te faut alors utiliser les boost::thread (et tout ce qui va avec). Boost et C++ s'utilisent de la même manière (il faut juste mettre "boost::" au lieu de "std::").
Si tu es en C, les pthread ne sont disponibles que via une bibliothèque externe. Ce qui n'est pas très pratique.