Wenn ich ein global flag verwende und 2 threads unabhängig voneinander darauf zugreifen, kann das in undefiniertem Verhalten enden?
Es ist völlig egal, ob die beiden threads immer den richtigen Wert fürs flag bekommen, ich muss nur sicher stellen, dass immer 0 oder 1 raus kommt, nie undefiniert.
Es ist völlig egal, ob die beiden threads immer den richtigen Wert fürs flag bekommen, ich muss nur sicher stellen, dass immer 0 oder 1 raus kommt, nie undefiniert.
Code:
//global
bool MyFlag = 0;
DWORD WINAPI Thread1(LPVOID data)
{
while(1)
{
int Irgendwas = SomeFunction();
int Sonstwas = SomeOtherFunction();
if(Irgendwas > Sonstwas)
{
MyFlag = 1;
}
else
{
MyFlag = 0;
}
}
return 0;
}
DWORD WINAPI Thread2(LPVOID data)
{
while(1)
{
if(MyFlag)
{
// mach was;
}
else
{
// mach was anderes;
}
}
return 0;
}