KeyLocks
1.0.0
문자열, 숫자 및 날짜와 같은 다른 객체 유형을 기반으로 잠금으로 코드를 실행하십시오.
모든 실행 코드에 대한 전 세계가 아닌 특정 값에 대한 코드를 선택적으로 잠급니다.
private static KeyLock<string> _keyLock = new KeyLock<string>();
public void Main()
{
Parallel.Invoke(
() => { UpdateData("entity-123", "First new value"); },
() => { UpdateData("entity-123", "Second new value"); }, // This will await line above
() => { UpdateData("another-entity-456", "Another new value"); },
() => { UpdateData("yet-another-entity-789", "Yet another new value"); });
}
private void UpdateData(string id, string value)
{
_keyLock.RunWithLock(id, () =>
{
// Execute locked code
});
}
UpdateData -method를 실행하는 invoke는 Parallel.Invoke 내부에서 실행 된 방법 1 과 2 서로를 기다리고 동시에 실행되지 않지만 다른 모든 것은 병렬로 실행됩니다.
NameLock 유형은 KeyLock<string> 의 짧은 용어입니다.
기본적으로 사례에 민감하지는 않지만 StringComparer.InvariantCultureIgnoreCase 생성자 연락으로 전달하여 변경할 수 있습니다.