具有唯一连续值的线程安全方式

本文关键字:线程 安全 方式 唯一 连续 | 更新日期: 2023-09-27 18:00:06

我有这样的代码:

static volatile int i = 0;
static void Foo() {
int myInt = i++;
// now use myInt
}

我需要使myInt的每个值唯一且连续。例如,如果要运行5个这样的线程,那么它们应该具有myInt0, 1, 2, 3, 4(顺序并不重要)。

所以,我不想知道这种方式是否线程安全,以及实现我所需要的最佳方式是什么?

具有唯一连续值的线程安全方式

为了线程安全,请使用Interlocked.Increment():

增加指定的变量和将结果存储为原子活动

    int MyInt = Interlocked.Increment(ref i);

[…并且没有理由将其标记为volatile,这在某种程度上已经损坏,并且可能在C#的未来版本中被弃用/删除…]