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
的等级给出答案并解释过程,那就太好了。