2015年3月9日 星期一

Tread start problem

今天考試被電了一回,題目是
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。

沒有留言:

張貼留言