S>1. Вот есть стандартное решение — типа как в С++. Вы запускаете поток и как бы просто исполнение раздвоилось. Теперь нужно помнить, что к одной и той же переменной могут одновременно получит доступ два разных потока — как-то синхронизировать эти доступы, учитывать это.
Я бы не сказал что это 'как в С++'. Это скорее просто подход без абстракций, максимально близко к тому как это реализуется операционной системой.
А абстракции есть и для С++ —
https://learn.microsoft.com/ru-ru/cpp/parallel/openmp/reference/openmp-directives?view=msvc-170 просто про них мало говорят