find_first вектора параллельно в C ++
У меня довольно большой вектор. Некоторые из членов вектора соответствуют определенному условию параллельно. Я хотел бы найти первый элемент, соответствующий условию.
Моя проблема очень похожа на этот вопрос (tbb: параллельный поиск первого элемента), но у меня нет тбб. Проверка состояния очень утомительна (поэтому я не могу сделать это для всех из них последовательно). Вот почему я хотел бы запустить его параллельно. Я должен упомянуть, что я хотел бы найти первый элемент (поэтому позиция индекса элемента важна для меня).
Например, если у меня есть 4 темы.
ThreadNr Index condition
1 0 Not Meet
2 1 Not Meet
3 2 Not Meet
4 3 Not Meet
ThreadNr Index condition
1 4 Not Meet
2 5 Meet
3 6 Not Meet
4 7 Meet
Функция должна перенастраивать индексный номер 5. Потоки должны быть распределены и работать с последовательным блоком итерации (размер блока может быть больше 1. Например, поток 1 работает с первыми 4 элементами, поток 2 с вторыми 4 элементами и т. Д. на).
Для приведенного выше примера, если поток с номером 4 (в индексе 7) обнаружил элемент перед потоком с номером 2 (в индексе 5), он должен дождаться, пока весь поток завершит работу. Как я уже говорил, самый низкий номер индекса является целью.
Пожалуйста, поправьте меня, если у вас есть лучший алгоритм.
ПРИМЕЧАНИЕ: я могу использовать внешние библиотеки, такие как boost 1.62, OpenMP 2.0