gpt4 book ai didi

c# - 结合 Interlocked.Increment 和 Interlocked.Exchange

转载 作者:太空宇宙 更新时间:2023-11-03 22:42:52 37 4
gpt4 key购买 nike

我希望以原子方式递增静态变量,同时以无锁方式将新值分配给实例字段。目标是让每个对象在创建时获得一个唯一的、递增的 ID,这样两个对象就不可能获得相同的 ID。

下面的代码能实现吗?

class MyClass
{
private static int currentOrderingId;
private int orderingId;

public MyClass()
{
Interlocked.Exchange(ref orderingId, Interlocked.Increment(ref currentOrderingId));
}
}

最佳答案

你只需要这样做:

orderingId = Interlocked.Increment(ref currentOrderingId);

两个线程不可能接收到相同的值,因此它是线程安全的。

关于c# - 结合 Interlocked.Increment 和 Interlocked.Exchange,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51442857/

37 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com