반응형

 

스레드 세이프란?

일종의 프로그램이 가진 특징 혹은 상태를 말하는데,

 멀티스레드 프로그래밍에서, 공유 자원(어떤 변수나 객체, 구조체 그리고 함수 등)을 여러 스레드가 동시에 접근해도, 프로그램 실행에 문제가 없는 특징 혹은 상태를 말한다.

 보다 엄밀하게는, 한 스레드로부터 호출되어 실행 중일 때, 다른 스레드가 그 함수를 호출하여 동시에 함께 실행되더라도, 각 스레드에서의 함수의 수행결과가 올바로 나오는 상태를 의미한다.

 

 

스레드 세이프 지키는 방법

1. Mutual exclusion (상해 배제)

공유자원 접근 시, 세마포어/뮤텍스로 락을 통제

 

2. Atomic operation (원자 연산)

공유자원 접근 시, 원자 연산을 이용하는 거 지향함.

 

3. Thread-local storage (스레드 지역 저장소)

4. Reentrancy (재진입성)

 

 

반응형