본문 바로가기

쓰레드

(2)
(c++)Singleton pattern 클래스를 멀티쓰레드에서 안전하게 만드는 방법 프로그램을 구성하다보면, 전역적으로 단일 인스턴스를 가져야 하는 모듈을 만들어야 하는 경우가 분명 있다. 이럴때 싱글톤(Singleton) 패턴으로 클래스를 구성하게 되는데..문제는 이 패턴이 멀티쓰레드에서 안전하지 않다는 것이다. 아래는 일반적인 싱글톤 패턴의 코드이다. 문제는 최초에 두개의 Thread가 연속으로 GetInstance()를 호출 했을때에 instance의 null체크에서 두 thread가 모두 null이 될 가능성이 있다는 것이다.이것을 해결하기위해서는 몇가지 솔루션이 있다. 1. criticalsection 사용 동시에 두 thread의 접근을 방지하여 안전성을 확보하자는 것인데, 문제는 criticalsection이 성능면에서는 별로 좋지 않다고 한다. 2. 최초에 getinsta..
JAVA 쓰레드 생성 방법 JAVA나 C++이나 기본 문법구문이나 구조는 크게 다르지 않다고 본다. C++을 계속 만져왔기때문에 JAVA의 기본 구문이나 기본적인 구조를 이해하는데는 전혀 문제가 없었다. 오히려 하나를 알고 있으니 다른 하나가 쉽게 다가 오는 것처럼... 그래서, JAVA를 공부하는데, 기본적인 내용에 대해서는 단 한두시간만에 대충대충 훑어보고 넘어갔다. 이후에 공부할 내용조차도 기본적인 개념은 몇가지를 빼놓고는 거의 동일한것 같다. 프로그램을 짤때, 종종 쓰게 되는것이 Thread인데 JAVA에서 Thread를 어떻게 쓰는지 봤다. JAVA에서 독립 쓰레드를 쓰기 위해서는 이렇게 쓰면 된다. class A extends Thread { public void run() { //쓰레드로 실행할 코드 } } publi..