OpenMP, используемый компилятором Intel, поддерживает переменную среды KMP_BLOCKTIME
(документы) который, как я полагаю, контролирует время ожидания занятости (спин-блокировка), которую потоки будут тратить на ожидание новой работы (связанный документ утверждает, что по умолчанию это 200 мс).
OpenMP, используемый компилятором Gnu, поддерживает переменную окружения GOMP_SPINCOUNT
(документы) который, как я полагаю, также контролирует детали реализации эквивалентной библиотеки (хотя, по-видимому, выражается в виде числа итераций, а не времени)
Мой вопрос: какие элементы управления (если есть) предоставляет Microsoft для управления этим параметром в OpenMP, используемом компилятором Microsoft? (Меня сейчас интересует VS2010.)
(Я хорошо знаю, что если бы параллелизм моей программы был полностью основан на OpenMP, у меня не было бы повода для беспокойства по этому поводу, но мой интерес вызван некоторыми следами vtune из большой сложной системы, которая также широко использует TBB.)
Microsoft Visual Studio 2010 SP1 и выше, похоже, поддерживают OMP_WAIT_POLICY, как показано в этом Статья базы знаний
установка OMP_WAIT_POLICY в Пассивная действительно исправляет проблему при компиляции с Visual Studio 2013.
Других решений пока нет …