私はブーストライブラリに問題があります。MinGWの下でのptimeをスレッドセーフではない
unsigned long GetEpochSeconds()
{
using namespace boost::posix_time;
using namespace boost::gregorian;
ptime now(second_clock::universal_time());
ptime epoch(date(1970,1,1));
time_duration diff = now-epoch;
return diff.total_seconds();
}
問題は、このコードはスレッドセーフではないということです:私は、次のコードをコンパイルするためのgcc 4.5.2でのMinGWを使用しています。複数のスレッド内から実行すると、アプリケーションがクラッシュします。今のところ、私はtime、mktimeなどのc標準関数に変換していますが、すべて正常に動作しますが、将来はいくつかのboost関数が必要になります。
私は-D_REENTRANTでもコンパイルしていましたが、これは役に立ちませんでした。
ありがとうございます。
'-mthreads'ですべてをコンパイルしましたか? – rubenvb
私は試みましたが、結果はありませんでした。 – kappa
パフォーマンスヒットがあまり大きくない場合は、ミューテックスでラップすることができます。 – sje397