멀티 스레드 2

[CS] 프로세스와 스레드

프로세스 (Process) 운영체제로부터 자원을 할당받은 작업의 단위이다. 프로그램이 실행되면 해당 프로그램 파일이 컴퓨터 메모리로 올라가게 되는데 이 동적인 상태의 프로그램을 프로세스라고 부른다. 스레드 (Thread) 프로세스 내에서 실행되는 흐름의 단위이자 프로세스를 구성하는 더 작은 실행 단위의 개념이다. 프로세스는 실행될 때 운영체제로부터 할당받은 독자적인 메모리 공간을 사용하지만 스레드는 같은 프로세스 내 다른 스레드와 메모리 공간을 공유한다. (Code, Data, Heap 등. 대신 Stack은 각 스레드 별로 따로 할당받는다.) 싱글 스레드 한 프로세스에서 하나의 스레드를 실행하는 것을 말한다. 장점 - 스레드가 하나밖에 존재하지 않기 때문에 공유 자원 접근에 대해 신경쓰지 않아도 된다...

CS 공부 2022.04.16

[CS] 스레드 안전 (Thread-safe)

스레드 안전 (Thread-safe) 함수, 변수, 객체 등이 여러 스레드로부터 동시에 접근이 이루어져도 프로그램이 정상적으로 실행됨을 의미한다. 스레드 안전은 한 프로세스 내에서 두 개 이상의 스레드가 동시에 작동하는 멀티 스레드 프로그래밍의 조건이다. 그 대표적인 예시로 최근 몇 년동안 핫한 프로그래밍 패러다임인 함수형 프로그래밍은 side effect를 유발하지 않고 thread safe한 순수 함수를 조합하여 멀티 스레드의 동시성 프로그래밍에서 강점을 보인다. 스레드 안전 보장하기 (1) 전역 변수, 힙, 파일 등 여러 스레드가 동시 접근 가능한 공유 자원을 최대한 사용해서는 안 된다. (공유 자원에 접근할 경우 리소스에 lock을 건다.) (2) 핸들, 포인터 등을 활용해 데이터를 간접 접근해서..

CS 공부 2022.02.27