如何控制微软的OpenMP自旋锁时间?

tim*_*day 6 c++ openmp visual-studio-2010 spinlock visual-studio

由英特尔编译器使用OpenMP的支持的环境变量KMP_BLOCKTIME(文档),我相信控制忙着等待(spinlocked)时间的线程将花费在等待新的工作(链接的文档声称此默认为200毫秒).

GNU编译器使用OpenMP的支持的环境变量GOMP_SPINCOUNT(文档),我相信也控制该库的等效实现细节(虽然表面上表现为一个迭代次数,而不是时间).

我的问题是:Microsoft提供哪些控件(如果有的话)来控制Microsoft编译器使用的OpenMP中的这个参数? (目前我感兴趣的是VS2010.)

(我,如果我的程序的并行性是完全基于的OpenMP会有什么理由担心这一点,但我的兴趣是通过从大型复杂系统,这也使得显著利用TBB的一些痕迹VTUNE挑起心知肚明.)

小智 5

Microsoft Visual Studio 2010 SP1及更高版本似乎支持OMP_WAIT_POLICY,如本知识库文章中所示

OMP_WAIT_POLICY设置为PASSIVE会在使用Visual Studio 2013进行编译时为我解决问题.