Unity 이론 (Interrupt, Mutex, Critical Section, DeadLock, Semapore, Busy-Wait, Fixed Update)

로젠·2024년 5월 13일
0

게임 프로그래밍

목록 보기
39/49
post-thumbnail

Interrupt

인터럽트는 일을 처리하는 중 급하게 다른 일을 처리할 때 사용하는 것으로 Thread 범위 안에서 일어나게 해야 한다. 주로 대량의 파일을 읽을 때 사용하며 다른 행동을 하고 싶을 때 사용한다.

Race Condition

경쟁 상태로 서로 수행하려고 하다가 전부 끝내지 못한 상태가 되는 오류를 발생시킨다.

Mutex

Mutex는 상호배제라는 뜻으로 Race Condition의 해결 방법이다. 이는 Thread가 변수의 영역에 들어가 락을 걸어 못 들어오게 하는 것을 말한다.

Mutex.WaitOne(); //Mutex를 실행해준다.
Mutex.ReleaseMutex(); //Mutex를 끝내준다.

Critical Section

Critical Section은 임계 영역이라는 뜻으로 Mutex에서 락을 걸었을 때 락을 건 영역을 말한다. 이는 상호배제 인덱스를 통해 임계 영역을 만든다.

DeadLock

DeadLock은 교착 상태라는 뜻으로 두 개 이상의 작업이 서로 상대방의 작업이 끝나기를 기다리고 결과적으로 아무것도 하지 못한 상태를 말한다. 자원이 있어야 프로세스가 일을 처리하는 데 자원을 차지하지 못해 시스템이 다운된다.

Semapore

Semapore은 깃발이라는 뜻으로 한 자원에 대해 여러 Thread가 접근할 수 있도록 하는 것이다.

Busy-Wait(PV)

Busy-Wait은 세마포어를 제어하는 알고리즘이다. 특정 공유 자원에 대하여 두 개 이상의 프로세스나 스레드가 그 이용 권한을 획득하고자 하는 동기화 상황에서 그 권한 획득을 위한 과정에서 일어나는 현상이다.

Waiting Queue

Waiting Queue는 대기 큐라는 뜻으로 세마포어를 제어하는 알고리즘이다. 대기큐는 입출력 장치 사용을 위해 기다리게 하는 큐를 말한다.

Fixed Update

Fixed Update는 Update와 다르게 일정 시간마다 호출해 주는 함수이다.

private void Update()
{
}

Damaged

플레이어가 적에게 Damage를 줄 때 타격감을 느끼게 하기 위해 Hit stop을 구현해야 한다. Hit Stop을 구현할 때 StopFrame을 이용하여 프레임을 멈추게 하고 LookAt을 이용하여 타격 시 플레이어를 바라보게 한 뒤 IsKinematic을 껐다 켰다를 하여 타격 시 힘을 받아 밀리게 설정한다. 또 타격 시 파티클을 이용하여 타격받는 효과를 넣어줄 수 있다.

0개의 댓글