본문 바로가기
728x90

데드락2

[c#/유니티] DeadLock과 SpinLock에 대해 DeadLock에 대해 알아보자 📌  데드락(DeadLock)이란?              두 개 이상의 프로세스가 서로의 작업이 끝나기만을 기다림. 둘 다 대기상태에 이르러 영원히 끝나지 않은 상황이다.              교착 상태라고도 말한다.                          👉 한정된 자원을 얻기 위해 서로 경쟁하기 때문에 발생한다.           🔎  DeadLock의 4가지 필요 조건                                아래 4가지 조건이 모두 만족되는 경우, 데드락이 발생하라 가능성이 있음                하나라도 만족하지 않으면 절대로 발생하지 않는다. -> 하나라도 해결되면, 데드락 문제를 풀 수 있다.                 .. 2022. 12. 8.
[c#/유니티] 임계영역(Critical Section)을 위한 Monitor와 Lock 멀티 스레드 환경에서 같은 객체를 여러 곳에서 호출하는 경우 예기치 않은 결과가 나타날 확률이 높다. 📌 Monitor 활용 상호 배제(Mutual Exclusive)를 이뤄 다른 스레드의 접근을 막도록 한다. Enter과 Exit로 구현하며 Enter는 문을 잠그는 행위, Exit는 문을 여는 행위라 생각하면 된다. Thread 1에서 Monitor.Enter(_obj)를 통해 임계 영역(Critical Section)에 들어가면, Thread2는 Thread 1에서 Monitor.Exit(obj)로 해제할 때 까지 해당 영역에 접근하지 못한다. *임계 영역 : 여러 스레드가 공유 자원에 접근할 때, 하나만 접근할 수 있도록 보장해 주는 영역. static int number = 0; //공유 자원 s.. 2022. 12. 7.
728x90
반응형