今天考試被電了一回,題目是
public class A { public int count = 0; public void AddCount(int value) { count += value; } } public void test() { A recordA = new A(); Threand thread = new Thread(delegate() { recordA.AddCount(1); } thread.Start(); recordA.AddCount(1); }
這邊是因為thread.Start()時,就有可能和下一行recordA.AddCount(1);同時執行,並且在拿count這個變數的值時,有可能都拿到相同的值。所以這邊應該在AddCount function內加lock。
沒有留言:
張貼留言