0
我不熟悉多線程和鎖以及原子/非原子操作。如何解釋多線程環境下的讀/寫全局變量
最近我看到一個面試問題如下。
把f1
和f2
分別放在兩個不同的線程中並且同時運行它們,當它們都返回時,a
的值是多少?
int a = 2, b = 0, c = 0
func f1()
{
a = a * 2
a = b
}
func f2()
{
c = a + 11
a = c
}
我試圖實現的目標C環境上面的代碼和我得到的是a = 11
。我不確定這是否正確,因爲我所做的是將f1
放在主隊列中,並將f2
放入調度全局隊列中,並運行它可能不正確的異步。
如果有人能夠根據register accessing
,CPU processing
,memory usage
的等級給出答案並解釋過程,那就太好了。