多线程 – 在Delphi中增加并返回整数的线程安全方式

在单线程应用程序中,我使用如下代码:

Interface
    function GetNextUID : integer;
Implementation
    function GetNextUID : integer;
    const
      cUID : integer = 0;
    begin
      inc( cUID );
      result := cUID;
    end;

这当然可以被实现为单例对象等等 – 我只是给出最简单的例子.

问:如何修改此函数(或设计类)以从并发线程安全地实现相同的结果?

最佳答案
您可以使用Interlocked *功能:

    function GetNextUID : integer;
    {$J+} // Writeble constants
    const
      cUID : integer = 0;
    begin
      Result := InterlockedIncrement(cUID);
    end;

转载注明原文:多线程 – 在Delphi中增加并返回整数的线程安全方式 - 代码日志