wpid-x9788931436921-2012-04-2-02-00.jpg

멀티 쓰레드 관련 책으로 뭐가 있나 살펴보다 눈에 띄어서 도서관에서 빌려서 살펴보았다.

가볍게 읽히기에 빠르게 훑어 보았다.

이 책에서 총 12가지의 멀티쓰레드 관련 패턴을 소개한다.

* Single Thread Execution – Synchronized를 사용하여 크리티컬 섹션을 만들어 이용

* Immutable – 인스턴스가 생성된 후에는 상태가 절대 변하지 않는 클래스. 즉, 처음 값 설정 이후에는 값이 변경되지 않는 것

* Guarded Suspension – 임계영역 진입 전 조건 확인. 조건에 맞지 않으면 기다린다(Suspension). 다른 쪽에서 깨워주면 다시 조건 확인.

* Balking – 임계영역 진입 전 조건 확인. 조건에 맞지 않으면 돌아간다(Balk).

* Producer-Consumer – 여러 생산자, 여러 소비자 사이에 중개자를 두는 방식.

* Read-Write Lock – 읽기와 쓰기를 구분하는 Locking 방식.

* Thread-Per-Message – 하나의 요청당 하나의 쓰레드를 생성하여 처리하는 방식

* Worker Thread – 요청을 처리할 쓰레드들(Worker)를 미리 만들어 두고, 요청이 들어오면 쓰레드에게 처리를 맡기는 방식

* Future – 요청을 하면 이를 처리하는 쓰레드를 생성하여 처리를 맡긴다. 요청한 쪽에서는 처리 결과를 확인 할 수 있는 인스턴를 넘겨 받아, 나중에 이 것을 통해서 결과를 얻어가는 방식

* Two-Phase Termination – 동작하고 있는 쓰레드를 종료시키기 위해서 종료 요구를 하며, 쓰레드에서는 종료 요구를 확인하여 종료 처리를 하는 방식.

* Thread-Specific Storage – 쓰레드 전용 공간을 만들어 사용하는 방식

* Active Object – 다소 복잡한 형태의 패턴. 요청을 받아 저장 해두고 이를 선택하여 처리하는 스케줄러 쓰레드가 존재. 결과는 Future 패턴 형태로 나중에 확인한다.

Active Object 패턴만 복잡하고, 나머지는 단순한(?) 형태라 이해하는데 어렵지는 않았다.

각 패턴마다 생각의 폭을 넓히기 위한 힌트라고 나오는 부분이 나름 괜찮았다.

Multi-thread를 이용한 프로그래밍을 시작하는 분들은 한번쯤 훑어 보면 괜찮을 것 같다.