我正在运行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中的段错误,我将不胜感激。*
答案 0 :(得分:7)
GCC不启用自动并行化,除非您使用例如-ftree-parallelize-loops
因此,如果您没有使用它,那么问题不在于自动并行化。