Kann ich eine thread-sichere std::atomic<vector<int>>?

Ich habe eine Funktion, die ausgeführt werden muss n=1000 Zeiten. Diese Funktionen hat ein Stil von Monte Carlo simulation und gibt einen int als das Ergebnis. Ich würde gerne nthreads=4 parallel. Immer wenn ein thread abgeschlossen ist ein Zyklus, es sollte das Ergebnis in eine std::vector<int>.
So, nach 1000 Zyklen, ich habe einen vector von 1000 ints, die untersucht werden kann, indem Statistiken.

Da ein std::vector ist nicht thread-sicher, dachte ich über std::mutex (die würden sicherlich funktionieren).

Aber ich Frage mich, ob ich das deklarieren einer vector-atomar sind und damit umgehen Mutexe?
Ist es möglich, ein std::atomic<std::vector<int>>? Und kann ich push_back etc. auf es?

  • Hast std::atomic<std::vector<int>> kompiliert?
  • Ich kann nicht versuchen, auf diese Maschine... aber kam gerade über atomic.
  • Ich wollte nur hinzufügen, dass wenn Sie von Anfang an wissen, dass Sie 1000 Hinrichtungen und der container store genau 1000 ergibt sich dann, warum Sie verwenden möchten, dynamischen container? Ich weiß, dass std::vector verwendet array in der Umsetzung und keine Umverteilung erforderlich sein werden, wenn Sie reservieren Sie genügend Speicherplatz am Anfang (also es werden keine Leistungssteigerung durch Verwendung von std::array).
InformationsquelleAutor dani | 2015-09-21
Schreibe einen Kommentar