본문 바로가기

멀티쓰레드3

순차(sequential) / 병렬(parallel) / 병행(concurrent) 처리방식 차이 순차 처리 / sequential 복수의 업무를 순서대로 하나씩 처리. 병렬 처리 / parallel 복수의 업무를 "동시에" 처리. 병행 처리 / concurrent 병렬에 비해 추상도가 높은 표현. 한 개의 업무를 어떠한 순서로 처리하든 상관 없는 여러 개의 작업으로 분할하여 처리. 작업자가 한 명이라면 분할된 작업들을 순차적으로 처리하게 되지만, 작업자가 두 명이라면 같은 작업을 병렬적으로 처리할 수 있다. 멀티쓰레드 프로그램에서의 처리 멀티쓰레드 프로그램의 경우 병행 처리를 의미한다. 만약 CPU가 한 개 뿐이라면 병행처리를 순차적으로 실행할 테고, CPU가 여러개라면 병행처리를 병렬적으로 실행할 수 있다. 일반 컴퓨터는 대개 CPU가 한개이므로 복수의 쓰레드가 작동하고 있다 하더라도 병행처리를 .. 2015. 1. 2.
멀티쓰레드 프로그램의 성능 평가 기준 #References: "Java 언어로 배우는 디자인 패턴 입문 - 멀티쓰레드편" Introduction 02 안정성 (safety) 안전성이란 객체를 망가뜨리지 않는 것. 올바른 프로그램의 필수 조건. - 객체가 망가진다는 것은, 객체가 설계자의 의도와는 다른 상태가 되는 것을 의미한다. 예를 들어, 객체의 필드가 예상 외의 값을 취하는 것 (마이너스 통장이 아닌...ㅋㅋ 계좌의 잔고가 마이너스가 된다던가.) - 여러개의 쓰레드가 이용해도 안정성이 유지되는 클래스를 thread-safety 클래스라고 한다. - 자바 클래스 라이브러리에는 thread-safety한 클래스와 그렇지 않는 클래스가 있으므로, 멀티쓰레드 프로그램에서 라이브러리를 사용할 때에는 API 레퍼런스를 확인하여 주의해야 한다. 예를.. 2015. 1. 2.
쓰레드의 배타제어 (mutual exclusion) / 동기화 (synchronized) 쓰레드의 배타 제어 (mutual exclusion)음.. 이건 여기에 그렇게 간단하게 정리할 만한 단순한 개념은 아닌 것 같지만 ....ㅋㅋ concurrent 하게 수행되는 여러개의 쓰레드가 같은 변수/인스턴스에 접근하는 경우를 "경쟁(race)"이라고 한다. 이러한 경쟁으로 인하여 예기치 않게 발생하는 상황을 date race, 혹은 race condition 이라고 한다. race condition을 방지하기 위해서는, 일종의 교통 정리가 필요하다. - 대표적인 교통 정리의 방법으로 상호 배타(mutual exclusion)가 있음. 하나의 쓰레드가 어느 부분을 실행하고 있을 때에는 다른 쓰레드가 그 부분을 실행할 수 없게 만드는 방법. 자바에서는 쓰레드의 mutual exclusion을 실행할 .. 2014. 4. 17.