禁用GCC自动并行化

时间:2013-07-05 11:32:45

标签: c++ c++11

我正在运行MinGW G ++ 4.8.1,当我更改以下代码时:

for (Room &r : TempRooms2) {  
    r.vNeighbours.clear();  
}

for (Room &r : TempRooms2) {
    r.vNeighbours.clear();  
    r.Layer=-1;  
}

以前运行完美的程序在libwinpthread-1.dll中崩溃了一个段错误。现在,我之前没有使用过这个G ++ 4.8.1版本的线程功能,经过测试后发现它们在我的操作系统上不稳定,所以我将来需要更改为不同的版本。我想利用线程。在那之前,有没有办法告诉G ++停止尝试并行循环?

*编辑:对不起,事实证明崩溃是由于代码进入其他地方的无限循环。我只是假设它是一个线程化的东西,因为GDP说'pthread_tls_init'的调用是segfaulting,我认为只有一个线程程序会使用它。如果有人能解释为什么Windows因为无限循环而导致程序出现在调试器中作为pthread中的段错误,我将不胜感激。*

1 个答案:

答案 0 :(得分:7)

GCC不启用自动并行化,除非您使用例如-ftree-parallelize-loops

因此,如果您没有使用它,那么问题不在于自动并行化。