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

Ответы на вопрос(2)

Ваш ответ на вопрос