Вы можете использовать std::async
, как предлагается в комментариях.
То, что вы также пытаетесь сделать, является очень распространенным использованием для Threadpool. Я использую простую реализацию заголовка, которую я обычно использую: здесь
Чтобы использовать эту библиотеку, создайте пул за пределами l oop с количеством потоков, установленных во время построения. Затем enqueue
функция, в которой поток go отключается и выполняется. С этой библиотекой вы получите std::future
(очень похоже на шаги std :: asyn c), и это то, что вы бы wait
включили в ваш l oop.
Как правило, вы хотели бы сделать доступ к любым поточно-ориентированным данным с мьютексами (или другими способами, есть много способов сделать это), но с очень точным c ситуации вам не понадобятся.
В этом случае
- , пока вектор не увеличивается в размере (не нужно перераспределять)
- Только чтение элементов или только изменяя каждый элемент в отдельном потоке
, вам не нужно беспокоиться о синхронизации.
Хотя в любом случае это просто хорошая привычка делать syn c. .. Когда другие люди в конечном итоге изменят код, они не будут знать ваши правила и вызовут проблемы.