메뉴 건너뛰기

넷서버 사용 팁/강좌

Synchronize 쉽게 사용하기

admin 2008.01.19 07:18 조회 수 : 3947

Synchronize메소드는 Protected메소드이므로 멀티스레드환경에서 자신이 생성한 스레드가 아닌 다른 컴포넌트에서 생성한 스레드내에서는 Synchronize를 사용하기가 곤란한 경우가 많습니다.
대표적인 경우가 넷서버의 서버에서 수신되는 클라이언트메세지의 처리작업이나 BusinessObject처리작업입니다.

이 경우 쉽게 사용할 수 있는 방법입니다.

** 델파이 7이상 : TThead.Synchronize(nil, Threadmethod)

예)
...
TThread.Synchronize(ShowData);


** 직접 구현하는 경우

type
TSync = class(TThread)
private
  fmethod: TThreadmethod;
public
  constructor Create(m: TThreadmethod);
  procedure Execute; override;
end;

implementation

{ TSync }

constructor TSync.Create(m: TThreadmethod);
begin
  inherited Create(fasle);
  Freeonterminate := true;
  fmethod := m;
end;

procedure TSync.Execute;
begin
  Synchronize(fmethod);
end;

예)
...
TSync.Create(ShowData);
..

위로