반응형

[프록시 패턴 바로가기]


가상 프록시는 쓰레드와 같다고 위의 포스트에서 정의했었다.


쓰레드는 메인 프로그램이 가동할 때에, 일정 시간마다 다른 프로그램을 잠깐씩 가동하는 것과 같다.


쓰레드를 사용할 때의 장점은 여러 가지의 일을 동시에 처리하는 것이다.


보통 게임을 처음 다운 받은 후, 게임 내에서 추가로 데이터를 받는 경우가 있다.


이 때, 데이터를 받을 때 일러스트나 애니메이션 등을 통하여 게임에 대한 튜토리얼 또는 세계관을 보여주는 경우가 있다.


이런 상황에서 메인은 배경, 쓰레드는 데이터 로드라 할 수 있다.


쓰레드가 안된다고 생각해본다면, 데이터를 모두 받을 때 까지 아무것도 하지 못한 채로 시간만 보내게 된다. (어우...)


이를 위하여 가상 프록시, 즉 쓰레드가 존재한다.



아래의 예제는 데이터를 읽어들이는 쓰레드와, 데이터를 얼마나 받았는지 지속적으로 확인하는 예제이다.


데이터를 얼마나 받았는지 대신에 메인 코드를 짜면, 위에서 말한 스토리와 같은 상황이다.




LoadData 클래스를 통해 데이터를 가져오고, Loading 클래스를 통하여 가상 프록시를 실행한다.


쓰레드를 실행하는 방법에 대해서는 자세히 공부하지 않았기에, 디자인 패턴을 공부하면서 이해한대로 간단하게 정의하면 아래와 같다.

(주의! 지극히 주관적이기 때문에 자세한 정보를 원하시는 분께서는 따로 공부하시는것을 추천드립니다!)


# 쓰레드 함수

CreateThread : 쓰레드 생성

WaitForSingleObject : 쓰레드의 현재 상태 반환

ReleaseSemaphore : 실행할 쓰레드가 존재하지 않음

CloseHandle : 쓰레드 종료


# 쓰레드 상태

WAIT_ABANDONED : 쓰레드 대기 상태

WAIT_OBJECT_0 : 실행중인 쓰레드가 존재하지 않을 떄

WAIT_TIMEOUT : 쓰레드 실행중




반응형

+ Recent posts