본문 바로가기
반응형

deadlock2

C# 멀티스레드 프로그래밍 커스텀 재귀적 락과 스핀락 정책 구현 C# 멀티스레드 프로그래밍 커스텀 재귀적 락과 스핀락 정책 구현재귀적 락과 스핀락이란?재귀적 락재귀적 락은 동일한 스레드가 이미 소유한 락을 다시 획득할 수 있는 락입니다. 재귀적 락이 없다면, 동일한 스레드가 중첩된 호출에서 동일한 락을 다시 획득하려 할 때 데드락이 발생할 수 있습니다.스핀락스핀락은 잠금을 시도하는 스레드가 일정 횟수만큼 바쁜 대기(spin) 상태를 유지하면서 잠금을 재시도하는 락입니다. 바쁜 대기 중에는 컨텍스트 스위칭이 발생하지 않으므로, 락이 곧 해제될 것으로 예상되는 경우 스핀락을 사용하면 성능을 향상시킬 수 있습니다. 스핀 횟수가 일정 수를 초과하면 Thread.Yield()를 호출하여 CPU를 양보합니다.코드 분석아래는 재귀적 락과 스핀락 정책을 사용하여 커스텀 락을 구현한.. 2024. 7. 1.
C# 멀티스레딩에서 데드락 문제와 해결 방법 C# 멀티스레딩에서 데드락 문제와 해결 방법예제 코드 분석아래 예제 코드는 두 개의 클래스 LockTestA와 LockTestB를 사용하여 각각 서로의 메서드를 호출합니다. 이 과정에서 데드락이 발생할 수 있습니다.class LockTestA{ static object _lock = new object(); public static void TestTaskA() { lock (_lock) { LockTestB.TestTaskB(); } } public static void TestTaskB() { lock (_lock) { } }}class LockTestB{ stat.. 2024. 7. 1.
반응형