동일한 코드에서 2 개의 분리 된 잠금을 사용하는 것이 나쁜 코드 디자인인지 궁금합니다. 두 가지 잠금 장치가 처음 구현 된 이유는 업데이트 된 필드가 관련이 없다고 생각합니다. 동일한 방법으로 2 개의 잠금 장치가있는 것은 좋지 않습니까?
public class MyClass
{
private readonly object _lock = new object();
private readonly object _lock2 = new object();
public async Task DoStuff()
{
lock(_lock)
{
//do some stuff
}
lock(_lock2)
{
//do some other stuff
}
}
}
는의가
_lock
는 만
int
변수를 수정하는 데 사용되며
_lock2
이 수정
List<string>
변수에 사용한다고 가정 해 봅시다. 두 잠금은 다른 스레드의 클래스에있는 다른 메소드에서 호출 할 수 있습니다. 여기 교착 상태에 대한 냄새가 있습니까? 그것은 내가 refactor해야하므로
DoStuff
메서드는 하나의 잠금 유형을 사용해야합니다 것 같습니다.
'lock'의 본문 내에 기다림이 없다면, 처음에는'async' 메쏘드로 잠그지 말아야한다. – Servy