0

我正在运行 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”的调用是段错误,我认为只有线程程序会使用它。如果有人能解释为什么 Windows 由于无限循环而终止程序,我将不胜感激,因为调试器显示为 pthread 中的段错误。*

4

1 回答 1

7

GCC 不会启用自动并行化,除非您请求它,例如-ftree-parallelize-loops

因此,如果您不使用它,那么问题不是由于自动并行化造成的。

于 2013-07-05T12:45:31.693 回答