Darf ich wissen, gibt es eine C++-Äquivalent-Klasse, zu Java java.util.concurrent.ArrayBlockingQueue
http://download.java.net/jdk7/docs/api/java/util/concurrent/ArrayBlockingQueue.html
Darf ich wissen, gibt es eine C++-Äquivalent-Klasse, zu Java java.util.concurrent.ArrayBlockingQueue
http://download.java.net/jdk7/docs/api/java/util/concurrent/ArrayBlockingQueue.html
Überprüfen Sie tbb::concurrent_bounded_queue von der Intel Threading-Bausteine (TBB).
(Disclaimer: Ich hatte noch keine Gelegenheit, es in einem Projekt zu verwenden, aber ich habe TBB verfolgt).
Die aktuelle Version von C++ enthält nichts Vergleichbares (sie enthält überhaupt keine Thread-Unterstützung). Auch die nächste Version von C++ (C++0x) enthält keine direkte Entsprechung.
Stattdessen verfügt es über beide Konstrukte auf niedrigerer Ebene, mit denen man eine thread-sichere blockierende Warteschlange erstellen kann (z.B. einen normalen Container zusammen mit Mutexen, Bedingungsvariablen usw., um den Zugriff darauf zu synchronisieren).
Es hat auch eine viel höhere Ebene von Konstrukten: eine promise
, a future
, a packaged_task
, und so weiter. Diese verbergen die relativ einfachen Details wie Warteschlangen zwischen den Threads. Stattdessen fordern Sie im Grunde nur an, dass etwas getan wird, und irgendwann später erhalten Sie ein Ergebnis. Alle dazwischen liegenden Details werden intern gehandhabt.
Wenn Sie sofort etwas brauchen, können Sie die Boost Interprocess Library in Betracht ziehen. Diese enthält (unter anderem) eine Nachrichtenwarteschlangenklasse. Wenn ich mich recht erinnere, unterstützt sie sowohl blockierende als auch nicht-blockierende Varianten.
gleichzeitige_warteschlange könnte das sein, wonach Sie suchen. Es wird mit der Parallel Patterns-Bibliothek von Microsoft geliefert.
Dies ist meine C++-Implementierung von ArrayBlockingQueue versucht, so nah und konform wie möglich zu Java-Implementierung zu sein. außer Iterator-Thread-Sicherheit Rest ist perfekt konform. Ich halte es im Allgemeinen nicht für notwendig, die gesamte Warteschlange zur Laufzeit zu iterieren.
https://github.com/anandkulkarnisg/ArrayBlockingQueue
Die Beispiele sollen zeigen, wie man die blockierende Warteschlange verwendet. Sie ist intern als zirkuläre pufferbasierte Warteschlange unter Verwendung von Raw Array [ für eine gute Leistung ] implementiert.
CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.