📻 minitalk
간단한 개념에 대해서만 설명하며 자세한 내용은 아래에서 추가적으로 다룬다.
멀티 스레드/프로세스 환경에서 공유 자원에 동시 접근할 때 일어나는 경쟁 상황을 일컫는다.
데이터 레이스가 발생하면 의도치 않은 동작이 발생할 수 있으며 이를 방지하기 위해서는 공유 자원에 대한 접근을 제한적으로 허용하는 상호배제가 필요하다.
뮤텍스 및 세마포어는 비동기 안전 함수가 아니라 핸들러에서는 사용이 불가능하다.
pthread_mutex_t lock = 0;
pthread_mutex_lock(&lock);
// something
pthread_mutex_unlock(&lock);
시그널 핸들러에서는 volatile sig_atoimic_t
를 사용해야 한다.
volatile sig_atomic_t lock = 0;
lock = 1;
// something
lock = 0;