Programming/Delphi

Thread 정리

통통만두 2010. 6. 30. 15:28
반응형

delphi에서 thread를 사용하기 위해서는
tthread를 상속 받아서 만들거나 CreateThread(API)를 이용하는 방법이다.

 

thread를 만드는데 있어서 꼭 알아야 할 function(?)들...
최소한 thread를 상속받아서 뭔가를 만들려면 이거는 알아야 한다.

 

procedure Execute; virtual; abstract;
tthread를 상속받으면 execute procedure를 구현해야 한다.
실행 하고 싶은 내용을 기술하는 곳이다.
project영역에 선언한다.

 

TThreadMethod = procedure of object;
procedure Synchronize(Method: TThreadMethod); overload;
thread를 사용하면서 세마포어나 뮤텍스를 사용해야할 부분이 있을때 이것을 할수 있다.
이 procedure내부는 기본적으로 세마포어를 사용 하고 있어서 모든 thread들이 Synchronize
부분을 수행할때는 오직 한 thread만 실행 되게 되어 있다.
참고로 Synchronize를 남발하면 속도가 느려 진다.
이 procedure를 난발하면 main thread부분에 영향을 미칠수 있다.(예, thread실행도중 button이 click되지 않는다.)
project영역에 선언한다.
synchronize보다는 TCriticalSection를 잘 활용해서 사용 하면 좋겠다.

 

property Terminated: Boolean read FTerminated;
실행되는 thread가 terminate되었는지 상태값을 갖는다.
true이면 terminate가 된것이므로 execute를 빠저나갈수 있게 한다.
project영역에 선언한다.

 

procedure Resume;
suspend상태의 thread를 실행 한다.

 

procedure Suspend;
resume(실행 상태)상태의 thread를 잠시 중지 시킨다.

 

procedure Terminate;
thread를 종료 시킨다.
terminate가 호출됬다고 해서 thread가 종료 된것은 아니다.
단지 thread를 종료 하라고 flag(terminated를 true로 만든것이다.)만 설정 한 것이다.

 

function WaitFor: LongWord;
thread가 terminate될때 까지 기다리게 한다.
보통은 해당 thread종료 할때 사용하는데...

thread.terminate;
thread.waitfor;
freeandnil( thread );
이런식으로 thread가 종료 할때까지 대기 시킨 후 thread가 종료 되면 free시킬때 사용하기도
한다.

 

property FreeOnTerminate: Boolean read FFreeOnTerminate write FFreeOnTerminate;
기본값은 false이다.
이 property를 true로 만들면 thread가 terminate된 후 내부에서 해당 thread 객체를 free를 시킨다.
대략적으로 관리할필요가 없을때 해당 thread의 freeonterminate값을 true로 만들어서 사용한다.


참고로
property ReturnValue: Integer read FReturnValue write FReturnValue;
필요하면 사용 한다.
별의미는 없는데 종료시 return값을 반환 하는 목적으로 사용 한다.
project영역에 선언되어 있다.

 

TThreadPriority = (tpIdle, tpLowest, tpLower, tpNormal, tpHigher, tpHighest, tpTimeCritical);
property Priority: Integer read GetPriority write SetPriority;
thread실행시 실행 정책을 설정 한다.

 

property Suspended: Boolean read FSuspended write SetSuspended;
thread의 suspend와 resume상태를 설정 할수 있게 하는 property이다.

 

property ThreadID: THandle read FThreadID;
thread실행 id를 반환 한다.
자동으로 만들어 지는 놈이다.

 

property OnTerminate: TNotifyEvent read FOnTerminate write FOnTerminate;
thread가 terminate되었을때 발행 하는 event를 설정 한다.

우선 이정도만 알면 thread를 만들어 사용하는데 문제없겠다.


thread를 하면서 한개 더 눈여겨 봐야될것이 tthreadlist이다.
간단히 설명 하면 생성된 thread를 list에 등록 하고 해당 내용을 관리 할수 있게 하자는 건데
별 기능은 없다 help를 확인 하면 된다.
참고로 list에 접근 할때는 반드시 locklist, unlocklist를 활용 해라 (사용 key군...)

반응형

'Programming > Delphi' 카테고리의 다른 글

3DES 암/복호  (0) 2010.06.30
Thread 정리 2  (0) 2010.06.30
[팁] 쓸만한 함수 2  (0) 2010.06.30
[팁] 쓸만한 함수  (0) 2010.06.30
이미지 포맷 확인하기  (0) 2010.06.30