Thread Safe方式具有唯一的连续值

时间:2011-06-21 07:43:31

标签: c# multithreading thread-safety

我有这样的代码:

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

我需要myInt的每个值都是唯一且连续的。例如,如果将运行5个此类线程,则它们应具有myInt0, 1, 2, 3, 4(顺序并不重要)。

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

1 个答案:

答案 0 :(得分:6)

对于线程安全使用Interlocked.Increment()

  

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

    int MyInt = Interlocked.Increment(ref i);

[...并且没有理由将其标记为易失性,这在某种程度上已被破坏,可能会在未来版本的C#中被弃用/删除...]