Вы можете использовать функции Interlocked*
:
function GetNextUID : integer;
{$J+} // Writeble constants
const
cUID : integer = 0;
begin
Result := InterlockedIncrement(cUID);
end;
Более современные версии Delphi переименовали эти методы в Atomic*
(например, AtomicDecrement
, AtomicIncrement
и т. Д.), Поэтому пример кодастановится так:
function GetNextUID : integer;
{$J+} // Writeble constants
const
cUID : integer = 0;
begin
Result := AtomicIncrement(cUID);
end;