我正在为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++
}
}
这个想法是两个任务不能同时访问锁定区域,但是我的问题是:使用对象锁定是否存在问题?是否应该仅出于锁定目的创建对象?为什么?