4.3.2 스레드 구현하기
스레드 방식은 여러 프로그래밍 언어에서 동시성을 구현하는 기본적인 방법으로 쓰인다. 그러나 이들 프로그래밍 언어에서 스레드가 반드시 명시적으로 쓰이는 것은 아니다. 그 대신 런타임 환경이 프로그래밍 언어가 제공하는 동시성 메커니즘을 실행 시점에 물리적 스레드에 배정한다. 프로세스 생성 기능은 프로그래밍 언어에서 제공하는 고수준 추상화를 통해 제공된다. 프로세스는 소스 코드상에서 유지 및 추적하는 편이 더 쉽기 때문이다.
노트
불가피한 경우가 아니라면 저수준 스레드를 사용하지 않는 편이 좋다. 저수준 스레드를 사용할 필요가 없도록 이들을 추상화해주는 라이브러리를 학습하기 바란다. C나 C++에서 POSIX 표준을 구현한 일반적인 구현체는 함수의 라이브러리 형태로 제공된다. 파이썬이나 자바, C#(닷넷)과 같은 현대적인 언어에서는 네이티브 스레드를 각각의 언어 설계와 특징에 걸맞은 형태로 추상화해 제공한다. 이와 비슷하게 다중 스레드를 Go 언어의 고루틴, 해스켈의 GHC, Scala 병렬 컬렉션, 얼랭(Erlang)의 프로세스, OpenMP와 같이 특정한 관용 표현 형태로 감싸 제공하기도 한다. 이러한 구현은 해당 런타임의 구현이 존재하는 운영체제라면 어디로든 이식이 가능하다.