これは、両方のスレッドが互いを認識する必要がないように、共有サービスまたはリソースに統合するのが最適です。擬似コード:
uses
SyncObj;
TSomeService = class
private
FLock : TCriticalSection;
public
constructor Create;
destructor Destroy; override;
procedure UseService;
end;
constructor TSomeService.Create;
begin
FLock := TCriticalSection.Create;
end;
destructor TSomeService.Destroy;
begin
FreeAndNil (FLock);
end;
procedure TSomeService.UseService;
begin
FLock.Enter;
try
// ...
finally
FLock.Leave;
end;
これは両方のスレッドに対して完全に透過的であるため、両方のスレッドは単に呼び出すことができます
FSomeService.UseService;
同期を気にせずに。