MacOS と Linux で正常に動作し、mingw を使用して Windows にクロスコンパイルするプログラムがあります。最近、プログラムをマルチスレッド化しました。
プログラムの現在の設計では、メモリがメイン スレッドに割り当てられ、スレーブの「ワーカー」スレッドで解放されます。malloc/free システムはマルチスレッドであるため、MacOS と Linux では問題ありません。
ただし、クロスコンパイルが心配です。私が使用しているmingwのバージョンは、MacOSポートから構築されています。これは 2004 年からのかなり古いバージョンの G++ (バージョン 3.4.5) です。より新しいバージョンをビルドしようとして失敗しました (64 ビット バージョンをビルドしたいのですが、あきらめました)。http://sourceware.org/pthreads-win32から pthread を取得しています。
私の懸念は、3.4.5 の malloc & free システムがマルチスレッド化されていないことです。
質問:
解放されるメモリのブロックがメインスレッドに戻されて解放されるように、プログラムを書き直す必要がありますか?
最新の mingw にアップグレードする必要がありますか?
大量のテスト以外に、これらの並行性の問題を見つける方法はありますか? それは私には気分が悪いだけです。
ありがとう!