스레드 안전 (Thread-safe)
함수, 변수, 객체 등이 여러 스레드로부터 동시에 접근이 이루어져도 프로그램이 정상적으로 실행됨을 의미한다. 스레드 안전은 한 프로세스 내에서 두 개 이상의 스레드가 동시에 작동하는 멀티 스레드 프로그래밍의 조건이다. 그 대표적인 예시로 최근 몇 년동안 핫한 프로그래밍 패러다임인 함수형 프로그래밍은 side effect를 유발하지 않고 thread safe한 순수 함수를 조합하여 멀티 스레드의 동시성 프로그래밍에서 강점을 보인다.
스레드 안전 보장하기
(1) 전역 변수, 힙, 파일 등 여러 스레드가 동시 접근 가능한 공유 자원을 최대한 사용해서는 안 된다. (공유 자원에 접근할 경우 리소스에 lock을 건다.)
(2) 핸들, 포인터 등을 활용해 데이터를 간접 접근해서는 안 된다.
(3) 서로 다른 스레드가 특정 함수를 호출할 때 각각의 스레드에 올바른 결과가 전달되어야 한다.
(4) 최대한 각각의 스레드에서만 접근할 수 있는 저장소를 활용한다.
'CS 공부' 카테고리의 다른 글
[Network] HTTP (HyperText Transfer Protocol) (0) | 2022.04.16 |
---|---|
[CS] 프로세스와 스레드 (0) | 2022.04.16 |
[Infra] Scale up & Scale out (0) | 2022.02.23 |
MSA (MicroService Architecture) vs Monolithic Architecture (0) | 2022.02.23 |
[OOP] 객체지향프로그래밍의 특성 (0) | 2022.01.31 |