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 の segfault でクラッシュします。さて、以前はこの G++ 4.8.1 ビルドのスレッド機能を使用したことがありませんでした。それらをテストした後、私の OS では安定していないことが判明したため、将来別のビルドに変更する必要があります。スレッドを活用したい。それまでは、G++ にループの並列化を停止するように指示する方法はありますか?

*編集: 申し訳ありませんが、クラッシュはコードが別の場所で無限ループに入ったことが原因であることが判明しました。GDPは「pthread_tls_init」への呼び出しがセグメンテーション違反であり、スレッド化されたプログラムだけがそれを使用すると思ったので、それはスレッド化のものだと思いました。無限ループが原因で Windows がプログラムを強制終了した理由をデバッガーが pthread のセグメンテーション違反として認識した理由を誰かが説明してくれたら幸いです。

4

1 に答える 1