Thread Safe

yshjft·2022년 1월 12일
0

운영체제

목록 보기
5/8

thread safe란?

멀티 스레드 환경에서 여러 스레드가 동시에 하나의 객체 및 변수에 접근할 때, 의도한데로 동작하는 것을 의미한다 .

thread safe 구현

thread safe 구현을 위해서는 임계 영역을 동기화 기법으로 제어해야 한다.

  • 임계 영역이란 동일한 자원을 동시에 접근하는 작업을 실행하는 코드 영역을 임계 영역이라고 한다.
  • 상호 배제, 진행, 한정 대기를 만족할 수 있도록 한다.

Reentrant(재진입성)

스레드가 동시에 접근하다러도 언제나 같은 실행 결과를 보장해야 한다.

  • 전역 변수를 사용하거나 반환하면 안되며 오로지 매개변수를 이용해야만 한다.
  • Reentrant 하다면 thread-safe하지만 역은 성립하지 않는다고 한다.
    thread-safe는 동기화 기법을 통해 무결성을 확보할 경우 전역 변수를 사용해도 된다.

😱 재진입성 ❌

// 실행되는 시점에 따라 결과가 달라짐
int g_var = 1;
…
int f()
{
  g_var = g_var + 2;
  return g_var;
}

재진입성 ⭕️

int f(int i)
{
  int priv = i;
  priv = priv + 2;
  return priv;
}

참고

profile
꾸준히 나아가자 🐢

0개의 댓글