int total = 200; // total is a global variable
void process()
{
int local;
for(int i = 0 ; i< 100 ; i++)
{
local = total;
local--;
total = local;
}
}
如果2個線程調用並聯process()
線程,會是怎樣的總最大&最小值兩個線程後完成處理?Posix線程 - 並行
我認爲最小值將爲0,但我不知道。最大值? 199?
這是一個功課題嗎?如果是這樣,你應該這樣標記它。 – Amber
在C++ 11中,由於'total'上的競爭條件,這是未定義的行爲。雖然我不確定C11。 – Mysticial
@Mysticial'未定義的行爲'並不總是一個答案:-P我認爲OP正在尋找一個關於低層可能發生的事情的想法。如果您檢查程序集,它會將總數讀入寄存器,然後寫回。 –