Heute sind wir über ein Problem in Bezug auf statische Elementfunktionen in einer Multithread-Umgebung gekommen. Die Frage, die wir uns gestellt haben und die keine befriedigende Antwort gefunden hat, ist: sind lokale Variablen von statischen Elementfunktionen statisch?lokale Variablen von statischen Elementfunktionen
// header
class A
{
static int test();
}
// implementation
int A::test()
{
int a = rand();
int b = rand();
int c = a + b;
return c;
}
Angenommen, Sie haben zwei Threads, die beide A :: test() aufrufen. Ist es möglich, dass, während Thread 1 verarbeitet c = a + b
Thread 2 tritt test() und ändert den Wert a
durch Zuweisen der neuen Rückgabewert von rand() oder mit anderen Worten operieren beide Threads eine der einige Speicherplätze für a, b und c ?