今天我們在多線程環境中討論了有關靜態成員函數的問題。我們問自己並且找不到令人滿意的答案的問題是: 也是靜態成員函數的局部變量static?靜態成員函數的局部變量
// header
class A
{
static int test();
}
// implementation
int A::test()
{
int a = rand();
int b = rand();
int c = a + b;
return c;
}
假設你有兩個線程都調用A :: test()。是否有可能在線程1處理c = a + b
時線程2輸入test(),並通過指定rand()的新返回值或換句話說,兩個線程操作a,b和c的一些內存位置來更改值a
?