TIdTCPServer는 멀티스레드 방식의 범용 소켓 컴포넌트입니다. (클라이언트 하나당 스레드 1개씩 생성)
OnExecute 이벤트 자체가 스레드에서 호출하는 call back 함수라고 보시면 됩니다.
당연히 메인과 서브 스레드가 하나의 vcl을 동시에 사용하려고 한다면 충돌이 발생하죠.
충돌이 발생하지 않도록 하는 방법은 여러가지가 있고 또 해당 vcl을 특정 하나의 스레드에서만 제어한다면
vcl 컨트롤(혹은 컴포넌트)자체가 메인스레드 소속이라도 충돌은 안일어납니다.
재량껏 작업하시면 될 듯 합니다.
-locke
첫눈 님이 쓰신 글 :
: TidTCPServer의 onExecute이벤트는 별도로 TThread객체를 만들어 주지 않아도 기본적으로 쓰레드 처리가 되는 것으로 알고있습니다.
:
: 즉, TidTCPServer의 onExecute안에서 처리해준 코드는 메인쓰레드가 아닌 새로운 쓰레드가 생성되어 처리된다고 이해하고 있는데요.
:
: 만일 그렇다면 TidTCPServer의 onExecute이벤트에서 VCL객체를 사용하려면
: TThread객체에서 VCL객체를 사용할때 Syncronize처리하는 것 처럼
: TidTCPServer의 onExecute에서도 Syncronize처리해야 하는건가요?
|