面试题答案
一键面试data_clone
的lock
操作happens - before
data
的lock
操作:- 判断依据:在创建新线程时,
data_clone
被move
到新线程中,新线程先获取data_clone
的锁并对其内部值进行修改。之后主线程获取data
的锁。由于新线程的创建和执行先于主线程中data
的lock
操作,所以data_clone
的lock
操作happens - before
data
的lock
操作。
- 判断依据:在创建新线程时,
*value += 1
的修改操作happens - before
println!("{}", *result)
的读取操作:- 判断依据:
*value += 1
对Mutex
保护的值进行修改,之后主线程通过data
获取锁并读取这个值用于打印。由于对共享数据的修改操作在时间上先于读取操作,所以*value += 1
的修改操作happens - before
println!("{}", *result)
的读取操作。
- 判断依据: