Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 具有唯一连续值的线程安全方式_C#_Multithreading_Thread Safety - Fatal编程技术网

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);