728x90
반응형

13 2

[Clean Code] 13장 동시성(2)

깨끗한 코드를 작성하기 위한 열세번째 기록 다중 스레드 프로그래밍에서 사용하는 실행 모델 1. 생산자-소비자 생산자 스레드가 정보를 생성해 버퍼나 대기열에 넣습니다. (버퍼와 대기열은 한정된 자원) 소비자 스레드는 대기열에서 정보를 가져와 사용합니다. 생산자 스레드는 대기열에 빈 공간이 있어야 정보를 채웁니다. 소비자 스레드는 대기열에 정보가 있어야 가져옵니다. 생산자 스레드는 대기열에 정보를 채운 다음 소비자 스레드에게 신호를 보냅니다. 소비자 스레드는 대기열에서 정보를 읽어들인 후 신호를 보냅니다. 따라서 잘못하면 생산자 스레드와 소비자 스레드가 둘다 진행 가능함에도 불구하고 동시에 서로에게서 오는 신호를 기다릴 가능성이 존재합니다. 2. 읽기-쓰기 쓰기 스레드가 버퍼를 갱신하느 동안 읽기 스레드가 ..

[Clean Code] 13장 동시성(1)

깨끗한 코드를 작성하기 위한 열세번째 기록 동시성이 필요한 이유 동시성은 결합을 없애는 전략입니다. 즉, 무엇과 언제를 분리하는 전략입니다. 무엇과 언제를 분리하면 애플리케이션 구조와 효율이 극적으로 나아집니다. 예시1) 서블릿 모델을 살펴보면 웹 혹은 EJB 컨테이너라는 우산 아래서 돌아가는데 컨테이너 들은 동시성을 부분적으로 관리합니다. 웹 요청이 들어올 때 마다 웹 서버는 비동기식으로 서블릿을 실행합니다. 그래서 서블릿 프로그래머는 들어오는 모든 웹 요청을 관리하지 않습니다. 예시2) 매일 수많은 웹 사이트에서 정보를 가져와 요약하는 정보 수집기를 봤을 때 단일 스레드 프로그램이라면, 수집하는데 많은 시간이 소요될 것입니다. 단일 스레드 수집기는 웹 소켓에서 입출력을 기다리는 시간이 아주 많기 때문..

728x90
반응형