OpenMP не определяет ничего о распределении приватных переменных.Есть два варианта: куча и стек.Если мы думаем о том, что каждый поток выполняет меньшее количество инструкций, имеет смысл для основного потока выделить частные переменные, как показано ниже.
Код:
1: set_threads(n)
2: #pragma omp parallel private(var)
3: {
4: var = ...
5:}
Машинный код:line2: var_ptr = новые переменные [n]line4: var_ptr [get_thread_id ()] = ...
Но приведенный выше код вызовет много ложного обмена частными переменными в разных потоках.Поэтому я думаю, что для компилятора имело бы смысл размещать их в стеке каждого потока.