Thread-safe

상현·2023년 1월 29일
0

cs스터디

목록 보기
18/28

정의

멀티 스레드 프로그래밍에서 함수나 변수, 혹은 객체가 여러 스레드로부터 동시에 접근이 이루어져도 프로그램의 실행에 문제가 없음을 의미함

Thread-safe를 위한 규칙

  • Mutual exclusion (상호 배제)
    • 공유자원에 하나의 Thread 만 접근할 수 있도록, 세마포어/ 뮤텍스로 락을 통제

  • Atomic operation (원자 연산)
    • 공유자원 변경에 관련된 연산을 원자적으로 분해한 뒤 데이터 변경이 일어나는 지점에 락을 걸어 통제

  • Thread-local storage (쓰레드 지역 저장소)
    • 공유 자원의 사용을 최대한 줄이고, 각각의 쓰레드에서만 접근 가능한 저장소들을 사용

  • Re-entrancy (재진입성)
    • 쓰레드 호출과 상관 없이 프로그램에 문제가 없도록 작성하는 방법


세마포어와 뮤텍스

공유 불가능한 자원의 동시 사용을 피하기 위해 사용됨

  • 세마포어
    • 현재 공유자원에 접근할 수 있는 쓰레드, 프로세스의 수를 나타내는 값을 두어 상호배제(뮤텍스)를 달성함
  • 뮤텍스
    • Key 에 해당하는 어떤 오브젝트가 있으며 이 오브젝트를 소유한 (쓰레드,프로세스) 만이 공유자원에 접근 가능함

0개의 댓글