我的問題是對this question的擴展。嵌套本地類的靜態方法
在原始問題中,OP詢問是否需要對數據競爭保護靜態函數的局部變量。答案是每個線程都有自己的堆棧框架。假設這同樣適用於具有靜態函數的嵌套類嗎?
// Function called by several threads
int someFunc(int a, int b)
{
struct nestedStruct
{
static int do_something(int& a, int& b)
{
a = rand();
b = rand();
return a + b;
}
};
return nestedStruct::do_something(a, b);
}
所有局部變量都放在堆棧上,所有線程都得到一個單獨的堆棧。無論是靜態函數還是嵌套類與它無關。 – 2012-02-14 20:49:52
嵌套類(我的意思是定義在一個函數內)有靜態成員呢?我試着用一個靜態成員變量。沒有工作。 – Sharad 2012-02-14 20:55:06
@Sharad:它確實可以... http://ideone.com/tl8Za – Samaursa 2012-02-14 21:02:41