J'ai cinq consommateurs et un producteur. Les cinq consommateurs produisent chacun des données différentes, provenant du producteur unique, pour ~ 10ms. Pendant ces 10ms, le producteur prépare les paramètres pour la sortie suivante. Lorsque les paramètres de sortie sont définis, je veux définir un drapeau demandant aux consommateurs de commencer la sortie suivante. Je veux seulement que le producteur produise quand les consommateurs produisent les données.C++: synchroniser 5 consommateurs à 1 producteur (multithread)
Je ne sais pas comment synchroniser les cinq consommateurs et le producteur unique. J'ai actuellement deux drapeaux, runFlag et doneFlag. Lorsqu'un consommateur lit les nouvelles données, je veux définir runFlag sur true pour que les calculs commencent, et je veux définir doneFlag sur false, car les calculs ne sont pas terminés. Cependant, si je mets doneFlag à false dans un consommateur, il peut être faux dans un autre consommateur avant que ce consommateur puisse vérifier le drapeau.
J'espère que ma question est assez spécifique. S'il vous plaît laissez-moi savoir s'il y a autre chose que je peux fournir. En outre, je cherche juste une idée générale de la façon de procéder. Je sais qu'il y a plusieurs façons de le faire, mais je ne sais pas quelle méthode fonctionnera le mieux.
Merci!
Vous pouvez utiliser Boost Thread qui prend en charge le mutex partagé. [link] (http://www.boost.org/doc/libs/1_43_0/doc/html/thread/synchronization.html#thread.synchronization.mutex_concepts.shared_lockable) –