是否存在类似于AtomicIncrement
但不具有线程安全性的标准函数?AtomicIncrement
既增加参数又将其作为新值返回。Inc
是一个过程,Succ
不改变参数值。实际上,我在旧代码中使用AtomicIncrement
时,没有好看的处理开放数组的方法。所以现在这个问题几乎没有意义。下面是一个示例:
type
TA = record
s: string;
constructor Create(const sparam: string);
end;
constructor TA.Create(const sparam: string);
begin
s := sparam;
end;
procedure TForm1.Button1Click(Sender: TObject);
var
a: TArray<TA>;
i: integer;
begin
// ancient approach
SetLength(a, 100);
i := -1;
a[AtomicIncrement(i)] := TA.Create('h');
a[AtomicIncrement(i)] := TA.Create('e');
a[AtomicIncrement(i)] := TA.Create('l');
a[AtomicIncrement(i)] := TA.Create('l');
a[AtomicIncrement(i)] := TA.Create('o');
SetLength(a, AtomicIncrement(i));
// modern approach
a := [];
a := a + [TA.Create('h')];
a := a + [TA.Create('e')];
a := a + [TA.Create('l')];
a := a + [TA.Create('l')];
a := a + [TA.Create('o')];
end;
1条答案
按热度按时间tv6aics11#
您可以使用此选项:
这在 Delphi 中实现了一个PreInc(C的--X操作符),在英特尔处理器的汇编中进行了优化。实现PostInc(X++)、PreAdd(X+=Y)和PostAdd由用户决定:-)