У меня есть функция, которая должна выполняться n=1000 раз. Эта функция выполняет моделирование методом Монте-Карло и возвращает результат int. Я хотел бы запустить nthreads=4 параллельно. Всякий раз, когда нить заканчивает один цикл, он должен поместить результат в std::vector<int>.
Таким образом, после 1000 циклов у меня есть вектор 1000 int, который может быть проверен статистикой.
Так как a std::vector не является потокобезопасным, я думал о std::mutex (который, несомненно, сработает).
Но мне интересно, могу ли я объявить вектор атомарным и, таким образом, обойти мьютексы?
Возможно ли иметь std::atomic<std::vector<int>>? И могу ли я использовать push_back и т.д. На нем?