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