C# 具有唯一连续值的线程安全方式
我有这样的代码:C# 具有唯一连续值的线程安全方式,c#,multithreading,thread-safety,C#,Multithreading,Thread Safety,我有这样的代码: static volatile int i = 0; static void Foo() { int myInt = i++; // now use myInt } 我需要使myInt的每个值唯一且连续。例如,如果将有5个这样的线程运行,那么它们应该具有myInt值0、1、2、3、4(顺序并不重要) 因此,我不想知道这种方式是否是线程安全的,以及实现我所需的最佳方式是什么?对于线程安全使用: 递增指定的变量,然后 以原子形式存储结果 手术 […没有理由将其标记为volatil
static volatile int i = 0;
static void Foo() {
int myInt = i++;
// now use myInt
}
我需要使myInt
的每个值唯一且连续。例如,如果将有5个这样的线程运行,那么它们应该具有myInt
值0、1、2、3、4
(顺序并不重要)
因此,我不想知道这种方式是否是线程安全的,以及实现我所需的最佳方式是什么?对于线程安全使用:
递增指定的变量,然后
以原子形式存储结果
手术
[…没有理由将其标记为volatile,它有些不稳定,在未来的C#…]版本中可能会被弃用/删除。]@cherraya请参阅Eric Lippert最近的博客文章
int MyInt = Interlocked.Increment(ref i);