Ich habe das folgende Szenario: Ich habe einen einzelnen Thread, der einen Container mit Paaren von Ganzzahlen (im Wesentlichen Aufgabenbeschreibungen) füllen soll, und ich habe eine große Anzahl von Worker-Threads (8-16), die Elemente aus diesem Container nehmen und einige Arbeit ausführen sollten.Erstellen einer Multithread-Warteschlange (Consumer/Producer) in C++
Ich dachte, das Problem könnte leicht durch eine blockierende Warteschlange gelöst werden - z.B. Beim Entfernen von Elementen synchronisieren Threads den Zugriff auf die Warteschlange und den Ruhezustand, wenn keine Daten verfügbar sind.
Ich (vielleicht zu Unrecht) nahm an, dass so etwas in der STL oder im Boost existieren sollte, aber ich konnte nichts finden.
Muss ich das Ding tatsächlich selbst implementieren? Es scheint so ein häufiges Szenario ...
Beachten Sie, dass der Consume-Prozess abhängig von Ihrer Semaphore-Implementierung möglicherweise innerhalb einer Schleife ausgeführt werden muss – Aaron