我有这样的代码:
static volatile int i = 0;
static void Foo() {
int myInt = i++;
// now use myInt
}
我需要myInt
的每个值都是唯一且连续的。例如,如果将运行5个此类线程,则它们应具有myInt
值0, 1, 2, 3, 4
(顺序并不重要)。
所以,我不知道这种方式是否是线程安全的,以及实现我需要的最佳方法是什么?
答案 0 :(得分:6)
对于线程安全使用Interlocked.Increment():
增加指定的变量和 将结果存储为原子 操作
int MyInt = Interlocked.Increment(ref i);
[...并且没有理由将其标记为易失性,这在某种程度上已被破坏,可能会在未来版本的C#中被弃用/删除...]