CS 공부

[CS] 스레드 안전 (Thread-safe)

콘요맘떼 2022. 2. 27. 21:12

스레드 안전 (Thread-safe)

  함수, 변수, 객체 등이 여러 스레드로부터 동시에 접근이 이루어져도 프로그램이 정상적으로 실행됨을 의미한다. 스레드 안전은 한 프로세스 내에서 두 개 이상의 스레드가 동시에 작동하는 멀티 스레드 프로그래밍의 조건이다. 그 대표적인 예시로 최근 몇 년동안 핫한 프로그래밍 패러다임인 함수형 프로그래밍은 side effect를 유발하지 않고 thread safe한 순수 함수를 조합하여 멀티 스레드의 동시성 프로그래밍에서 강점을 보인다.

 

스레드 안전 보장하기

(1) 전역 변수, 힙, 파일 등 여러 스레드가 동시 접근 가능한 공유 자원을 최대한 사용해서는 안 된다. (공유 자원에 접근할 경우 리소스에 lock을 건다.)

(2) 핸들, 포인터 등을 활용해 데이터를 간접 접근해서는 안 된다.

(3) 서로 다른 스레드가 특정 함수를 호출할 때 각각의 스레드에 올바른 결과가 전달되어야 한다.

(4) 최대한 각각의 스레드에서만 접근할 수 있는 저장소를 활용한다.