Начиная с C ++ 11, обычный c ++ имеет концепцию потоков, но наиболее краткий способ асинхронного вызова функции - это использовать асинхронную команду C ++ 11 вместе с фьючерсами. В конечном итоге это выглядит очень похоже на то, как вы делаете то же самое в pthreads, но оно на 100% переносимо на все операционные системы и платформы:
Скажем, ваша функция имеет возвращаемое значение ... int = MyFunc (int x, int y)
#include <future>
Просто сделай:
// This function is called asynchronously
std::future<int> EventualValue = std::async(std::launch::async, MyFunc, x, y);
подвох? Как вы знаете, когда это сделано? (Барьер.)
В конце концов, сделайте:
int MyReturnValue = EventualValue.get(); // block until MyFunc is done
Обратите внимание, что таким образом легко провести параллель для цикла - просто создайте массив фьючерсов.