具有唯一连续值的线程安全方式
本文关键字:线程 安全 方式 唯一 连续 | 更新日期: 2023-09-27 18:00:06
我有这样的代码:
static volatile int i = 0;
static void Foo() {
int myInt = i++;
// now use myInt
}
我需要使myInt
的每个值唯一且连续。例如,如果要运行5个这样的线程,那么它们应该具有myInt
值0, 1, 2, 3, 4
(顺序并不重要)。
所以,我不想知道这种方式是否线程安全,以及实现我所需要的最佳方式是什么?
为了线程安全,请使用Interlocked.Increment():
增加指定的变量和将结果存储为原子活动
int MyInt = Interlocked.Increment(ref i);
[…并且没有理由将其标记为volatile,这在某种程度上已经损坏,并且可能在C#的未来版本中被弃用/删除…]