본문 바로가기
CS/운영체제

Thread-Safe란 무엇일까?

by 쌩욱 2022. 1. 17.

✔ Thread-Safe

  • 멀티 쓰레드 프로그래밍에서 일반적으로 어떤 함수나 변수, 혹은 객체가 여러 쓰레드로부터 동시에 접근이 이루어져도 프로그램의 실행에 문제가 없음을 뜻한다.

 

  •  하나의 함수가 한 쓰레드로부터 호출되어 실행 중일 때, 다른 쓰레드가 그 함수를 호출하여 동시에 함께 실행되더라도 각 쓰레드에서의 수행 결과가 올바르게 나오는 것으로 정의한다.
멀티쓰레드 환경에서 동작해도 원래 의도한  형태로 동작하는 코드를 "Thread-Safe"하다고 한다.

 

✔ Thread-Safe 보장 방법

  • Re-entrancy
    • 어떤 함수가 한 쓰레드에 의해 호출되어 실행 중일 때, 다른 쓰레드가 그 함수를 호출하더라도 그 결과가 각각에게 올바로 주어져야 한다.
  • Thread-local storage
    • 공유 자원의 사용을 최대한 줄여서 동시 접근을 막는다.
    • 글로벌 변수 사용 지양
  • Mutual exclusion
    • 공유 자원을 꼭 사용해야 할 경우 해당 자원의 접근을 세마포어 등의 락으로 통제
    • Java의 synchronized 등
  • Atomic operations
    • 공유 자원에 접근할 때 원자적(Atomic)으로 데이터에 접근함으로써 상호 배제를 구현
  • Immutable Object
    • 객체 생성 이후에 값을 변경할 수 없도록 만듬

'CS > 운영체제' 카테고리의 다른 글

Sync / Async, Block / Non-block 차이점  (0) 2022.01.18
동기화 문제의 해결책 (Mutex, Semaphore)  (0) 2021.12.13
Process/Thread 정리, 차이점  (0) 2021.12.04