Я только что научился использовать функцию параллельно. Следующая строка кода вычисляет квадратное значение индекса и помещает его в массив (называемый квадратами) по этому индексу. Функция parallel_for доступна в Visual Studio 2010 как часть пространства имен Concurrency под заголовком.
parallel_for(static_cast<size_t>(0), count,
[&squares](size_t n) { squares[n] = (n+1)*(n+1); });
Вы можете видеть, что оно использует лямбда-выражение для параллельного вычисления квадратов, и этот код работает и компилируется правильно. Однако лямбда-выражение загромождает функцию parallel_for кодом. Я думал просто определить лямбда-выражение внутри объекта функции, например:
function<void(size_t)> Squares =
[&squares](size_t n) { squares[n] = (n+1)*(n+1); };
Мой вопрос: как я могу использовать эту функцию (квадраты) в функции parallel_for? Я написал функцию Squares неправильно, или это просто парадигма параллельного_для использования лямбда-выражения? Вы можете пойти дальше и порекомендовать мне другие параллельные библиотеки, кроме Microsoft, но я все же хотел бы знать ответ на мой вопрос.