Предполагая, что вы заранее знаете длину массива, назовите эту длину k.Разбейте массив на n частей, имеющих индексы [0, k / n], [k / n + 1, 2 * k / n], ..., [(n-1) k / n + 1, k).Создайте статическую переменную для хранения индекса наименьшей части и инициализируйте его как INT_MAX
(или эквивалентный).Назначьте одно ядро процессора (или поток) для последовательного прохождения индексов в каждой части, проверяя индекс, в котором найдена первая 1, относительно значения статической переменной, и записывая новый индекс, если он меньше (и возвращая).Мьютексы / семафоры должны использоваться для управления чтением / записью для статической переменной.Используйте thread_join
(или эквивалентный) для синхронизации завершения этой операции для каждого потока, затем напечатайте (или верните) индекс из основного потока.