在C#中使用锁的正确方法是什么

时间:2019-02-13 11:11:44

标签: c# .net parallel-processing

我正在为C#中的应用程序开发并行解决方案。

我构建了一个似乎可行的解决方案,但是在互联网上进行了一些研究之后,我意识到这可能不是最好的方法

static void Main() {    
    var someObject = new Object() { SomeAttribute = 0 };
    var task1 = new Task(delegate
                {
                    SomeMethod(someObject);
                });
    var task2 = new Task(delegate
                {
                    SomeMethod(someObject);
                });
    task1.Start();
    task2.Start();

} 

static void SomeMethod(Object someObject) {
    lock(someObject) {
        someObject.SomeAttribute++
    }
}

这个想法是两个任务不能同时访问锁定区域,但是我的问题是:使用对象锁定是否存在问题?是否应该仅出于锁定目的创建对象?为什么?

0 个答案:

没有答案