Puedes usar TCriticalSection para esto.
Código:
uses SyncObjs;
.
.
.
with TCriticalSection.Create do
try
Acquire;
// Lo que pongas aqui se ejecutara solo, los demas thread se
// detendran y esperan a que termine esta seccion para continuar
Release;
finally
Free;
end;