serversim
학습시뮬레이터템플릿가격
…
…
메뉴 열기
학습↗시뮬레이터↗템플릿↗가격↗
내 Documents문서
전체 목차/2장/2.26 / 40

2.2 · 프로세스와 동시성

스레드는 무엇을 공유하고 무엇을 따로 가질까?

같은 프로세스의 두 스레드는 왜 서로 영향을 줄 수 있을까요?

스레드는 코드·전역 데이터·힙·파일을 함께 쓰지만, 실행 위치와 스택은 각자 가집니다.

먼저 생활 비유

한 집을 함께 쓰는 룸메이트

거실과 냉장고는 공유하지만 각자의 가방과 할 일 목록은 따로 있는 것과 같습니다.

컴퓨터 예제로 바꾸기

두 스레드가 같은 목록 수정하기

sharedList.add(item);

목록은 힙에 있어 함께 보입니다. 함수의 지역 변수는 각 스레드 스택에 있어 보통 서로 섞이지 않습니다.

직접 움직여 보기1 / 5

지금 일어나는 변화

코드·파일

모든 스레드가 같은 함수와 열린 파일을 사용할 수 있습니다.

실행권과 상태실행 · CPU 차례대기 · 메모리 · 운영 체제코드·파일단계 1전역 데이터단계 2힙단계 3각자 스택단계 4각자 PC단계 5변수 접근현재: 코드·파일

이 그림에서 기억할 한 문장

공유는 통신을 쉽게 하지만 동시에 수정할 때 충돌할 가능성도 만듭니다.

현재 상태

이동하는 것
변수 접근
현재 위치
코드·파일
다음 위치
전역 데이터

30초 확인 문제

일반적으로 스레드마다 따로 있는 것은?

처음 보는 용어 두 개

공유 리소스
여러 스레드가 같은 실체에 접근하는 자원
스레드 스택
한 스레드의 함수 호출과 지역 변수를 보관하는 공간

이 절을 다 읽었다면

공유는 통신을 쉽게 하지만 동시에 수정할 때 충돌할 가능성도 만듭니다.

← 이전 절

2.1 CPU에서 운영 체제, 프로세스, 스레드까지

다음 절 →

2.3 스레드 안전 코드는 어떻게 만들까?