본문 바로가기

프로그래밍/디자인패턴

[ST교육] thiscall 3


멀티스레드 개념을 객체지향으로 캡슐화 해보자.




func함수가 함수 포인터로 다른 스레드가 또 실행되고, 

그 다음 "A"가 void* p로 전달된다. 



아래 코드가 라이브러리 내부에 있는 클래스라고 가정해보자.



run() 함수는 멤버 함수이므로 this가 있다. 

사용자가 this를 보내주면, threadMain함수에서 casting 해서 쓸 수 있다.


threadMain함수는 static 함수여야 한다.

왜냐하면 CreateThread에서 호출될 때, this가 추가되어서 모양이 달라진다. 

따라서 this없이도 부를 수 있는 static함수로 만든다. 


threadMain 함수 내부에서

Main함수를 부를 때, Main 함수는 멤버 함수이므로 this가 필요하다.

Thread를 하나 생성하여 p를 casting 하여 this를 받아 사용한다. (this->Main(); 를 쓸 수 있게 하려고)



'프로그래밍 > 디자인패턴' 카테고리의 다른 글

[ST교육] 생성자소멸자  (0) 2014.09.06
[ST교육] thiscall 4  (0) 2014.08.31
[ST교육] thiscall 2  (0) 2014.08.31
[ST교육] thiscall 1  (0) 2014.08.28
[디자인패턴] Adapter Patten  (0) 2014.01.28