single threaded process

기존 메인 함수에서 변수 초기화, 연산 , 생성자 로 인스턴스 생성, 함수 실행, 소멸자로 인스턴스 소멸

등 하나의 실행 흐름(메인 쓰레드)으로 프로그램 진행.

단점 : 복잡한 연산을 하다가 로그를 남기고 싶으면 연산을 하다가 멈추고 로그 기록 하고 다시 연산 수행.

하지만 멀티 쓰레드 프로세스에서 하나의 쓰레드를 더 만들어 로그 기록 전용으로 사용한다면, 연산 쓰레드에서는 연산을 계속 수행 가능.

multi threaded process

메모리는 코드 , 데이터(static), 힙, 스택 영역으로 나뉜다.

만약 쓰레드를 하나 더 만들면 스택 부분 을 두개로 나눠 각 쓰레드마다 스택을 하나씩 가진다

하지만 각 쓰레드는 힙, 데이터 영역를 다른 쓰레드와 공유한다.

data race

undefined behavior

왜 일어나는 가