📻 minitalk

❓minitalk (0) 개요

❓minitalk (1) 허용 함수

❓minitalk (3) 시그널 구조

❓minitalk (4) 시그널 주의사항 ⚠️

❓minitalk (5) 통신 관련 용어 및 기술

❓minitalk (6) 구현 예시 및 테스트

선행 지식


간단한 개념에 대해서만 설명하며 자세한 내용은 아래에서 추가적으로 다룬다.

프로세스와 스레드

https://s3-us-west-2.amazonaws.com/secure.notion-static.com/78621abf-104c-409e-ae03-4e1707755d4a/Untitled.png

데이터 레이스(Data Race)

멀티 스레드/프로세스 환경에서 공유 자원에 동시 접근할 때 일어나는 경쟁 상황을 일컫는다.

데이터 레이스가 발생하면 의도치 않은 동작이 발생할 수 있으며 이를 방지하기 위해서는 공유 자원에 대한 접근을 제한적으로 허용하는 상호배제가 필요하다.

해결 방법1 (with philosopher)

뮤텍스 및 세마포어는 비동기 안전 함수가 아니라 핸들러에서는 사용이 불가능하다.

pthread_mutex_t lock = 0;

pthread_mutex_lock(&lock);
// something 
pthread_mutex_unlock(&lock);

해결 방법2 (with minitalk)

시그널 핸들러에서는 volatile sig_atoimic_t를 사용해야 한다.

volatile sig_atomic_t lock = 0;

lock = 1;
// something 
lock = 0;