Чтобы распараллелить задачи, вам нужно разделить входные данные и распределить их по нескольким потокам.Не зная заранее длины строки, вы не можете разделить данные.
Таким образом, вы должны знать заранее выделенный размер входных данных (который не обязательно совпадает с длиной строки), затемэто будет работать.
Ваша программа может вернуть несколько значений NUL, которые могут быть найдены.Ваша функция может знать только то, что правильное значение NUL было найдено, если все потоки, которые обрабатывают данные, предшествующие любому из найденных значений NUL, были завершены.
Скажем, у нас есть разделение строкв 8 кусков (0-7).Если мы нашли NUL-значения в чанке 3, мы не можем знать, возможно, есть ли другие NUL-значения в чанках 0-2, поэтому нам нужно ждать любого из этих потоков, и мы можем немедленно остановить все другие потоки.Если в потоке 1 будет найдено значение NUL, нам нужно только дождаться завершения потока 0, чтобы мы могли получить окончательный ответ.