Предполагая, что все переменные имеют целочисленные типы или типы с плавающей запятой, нет никакого смысла распараллеливать этот код (в смысле выполнения различными потоками / ядрами), так как издержки будут намного выше, чем любая выгода от Это. Применимый параллелизм в этом примере находится на уровне нескольких вычислительных блоков и / или векторизации на одном CPU. Оптимизирующие компиляторы в настоящее время достаточно сложны, чтобы использовать это автоматически, без изменений кода; однако, если вы хотите, вы можете явно использовать временные переменные, как во второй части вопроса.
И если вы спросите просто из любопытства: Intel Parallel Studio предоставляет несколько способов распараллеливания кода. Например, давайте использовать ключевые слова Cilk вместе с лямбда-функциями C ++ 11:
#include <cilk/cilk.h>
...
temp = cilk_spawn [=]{ return a+b; }();
sum = c+d;
cilk_sync;
sum += temp;
Не рассчитывайте на повышение производительности (см. Выше), если только вы не используете классы с перегруженной вычислительной нагрузкой operator+
.