在单线程应用程序中,我使用如下代码:
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中增加并返回整数的线程安全方式 - 代码日志