Witam,
czy poniższy fragment kodu jest wątkowo-bezpieczny(thread-safe) z punktu widzenia standardu C++ z 2003 roku?
volatile bool x = false;
//watek 1 - zapisuje i czyta x
x = true;
if(x)
//...
//watek 2 - czyta x
if(x)
//...
Witam,
czy poniższy fragment kodu jest wątkowo-bezpieczny(thread-safe) z punktu widzenia standardu C++ z 2003 roku?
volatile bool x = false;
//watek 1 - zapisuje i czyta x
x = true;
if(x)
//...
//watek 2 - czyta x
if(x)
//...
Nie, nie jest.
dlaczego nie? jeśli tylko jeden wątek zapisuje wartość, to nie powinno być problemu. w razie jednoczesnego dostępu z obu wątków najwyżej wątek 2 załapie się w danej iteracji na wartość jeszcze przed zmianą.
a temu nie zapobiegniesz w żaden sposób, ani nie jest to groźne.