더북(TheBook)

하지만 멀티스레드로 구현하면 데이터를 쉽게 공유할 수 있습니다. 멀티프로세스와 달리 여러 스레드가 스택만 서로 다른 공간을 갖고 코드, 데이터, 힙은 공유하기 때문입니다. 그림 10-7은 한 프로세스 안에 있는 멀티스레드의 메모리 구조입니다.

219_2

그림 10-7 멀티스레드의 메모리 구조


스레드는 각자 독립적인 스택 세그먼트를 갖지만, 코드, 데이터, 힙은 다른 스레드와 공유합니다. 데이터 세그먼트나 힙 세그먼트에 공유 데이터를 두면 모든 스레드가 이용할 수 있습니다.

메모리 구조만 봐도 실행 흐름이 동시에 필요하고 더욱이 공유 데이터가 있다면 멀티스레드로 구현하는 것이 훨씬 합리적일 것 같습니다. 이처럼 동시에 여러 실행 흐름이 필요한 프로그래밍을 동시성(concurrency) 프로그래밍이라고 하고 이를 구현하고자 멀티스레딩을 이용합니다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.