Resource check

공유/고유 자원 판별표

스레드가 같은 위치를 함께 보거나 쓰는지 먼저 나누면, 경쟁 조건 후보와 동기화 필요 여부가 바로 드러납니다.

자원 전역 변수 / 힙 객체
판정 공유
이유 같은 주소 공간에서 같은 데이터를 접근합니다.
판단 하나라도 쓰면 잠금, 원자 연산, 메시지 전달을 검토합니다.
자원 파일 디스크립터 / 소켓
판정 공유
이유 프로세스가 연 핸들을 스레드들이 함께 사용합니다.
판단 읽기/쓰기 순서가 중요하면 큐나 잠금으로 조율합니다.
자원 스택 지역 변수
판정 고유
이유 각 스레드는 독립적인 호출 체인과 스택을 가집니다.
판단 주소를 다른 스레드에 넘기면 다시 공유 자원으로 봅니다.
자원 PC / 레지스터
판정 고유
이유 스케줄러가 스레드별 실행 위치와 문맥을 저장합니다.
판단 데이터 경쟁의 대상이 아니라 문맥 전환 비용의 대상입니다.
  1. 1

    같은 위치인가

    주소나 열린 핸들이 같으면 공유 후보입니다.

  2. 2

    쓰기 작업이 있는가

    읽기만 있으면 안전하지만, 쓰기가 섞이면 경쟁 후보입니다.

  3. 3

    순서가 중요한가

    결과가 순서에 의존하면 동기화 정책을 정합니다.