Ana iş parçacığı üzerinde bazı statik verileri başlatmak istiyorum.Yan etkileri varsa fonksiyonlar optimize edilebilir mi?
int32_t GetFoo(ptime t)
{
static HugeBarData data;
return data.Baz(t);
}
int main()
{
GetFoo(); // Avoid data race on static field.
// But will it be optimized away as unnecessary?
// Spawn threads. Call 'GetFoo' on the threads.
}
Eğer suçlayıcı bunu kaldırmaya karar verebilirse, orada kalmaya nasıl zorlayabilirim?
Derleyicileri yazan kişilerin, geri dönüş değerlerini attığınız için yan etkilere sahip olan işlev çağrılarını atmaya yetecek kadar akıllı olduklarını iyimser bir şekilde iyimserim. – meagar
Standartın bazı ilgili bölümlerini takdir ediyorum. – Sam
Amacınız ırk koşullarından kaçınmak ise (kaynak kodu yorumunda da belirtildiği gibi), ilk aramaya ihtiyacınız yoktur. C++ 11, yerel statik değişken başlatma için hiçbir yarış koşulunu garanti etmez (standardın önceki sürümleri, iplikler hakkında sessizdir). – Eugene