다음 코드를 작성했습니다.멀티 스레딩 : 속성 잠금 - 정확합니까?
static readonly object failedTestLock = new object();
public static Dictionary<string, Exception> FailedTests
{
get
{
lock (failedTestLock)
{
return _failedTests;
}
}
set
{
lock (failedTestLock)
{
_failedTests = value;
}
}
}
public void RunTest(string testName)
{
try
{
//Run a test
}
catch (Exception exception)
{
// ?? Is this correct/threadsafe?
FailedTests.Add(testName, exception);
}
}
QUESTION :
실패한 테스트를 사전에 안전하게 추가하는 올바른 방법입니까?
이 스레드 안전합니까?
FailedTests.Add가 잠금 내부에 호출되었거나 잠금 외부에 있습니까?
이것이 왜 올바른지/threadsafe인지 또는 왜 그렇지 않은지 설명 할 수 있습니까?
미리 감사드립니다
그리고 이렇게하면 'ReaderWriterLockSlim' 사용을 고려해야합니다. – Bryan
그런데 미안 해요, 내가 늦게 물어 보면. 하지만, 무엇을, 우리가 getter와 setter 둘레에 고정한다면? 이렇게하면 정의 된 순서대로 가져 와서 설정하는 측면에서 완벽한 스레드 안전성을 보장해서는 안됩니까? – icbytes
@icbytes - 아니요. –