当我打算安全地为每个线程增加一个静态int时,我需要做的就是将该静态字段标记为[ThreadStatic],对吗?
public static class MyClass
{
public static int GetOrdinal() => ++myInt;
[ThreadStatic]
private static int myInt;
}根据我的意图,这是不是言过其实了?
public static class MyClass
{
public static int GetOrdinal() => Interlocked.Increment(myInt);
[ThreadStatic]
private static int myInt;
}发布于 2019-12-17 05:13:55
回答你的第一个问题,是的,这就是你要做的。不需要锁定,因为对int的所有访问(根据定义)都是在运行的线程上序列化的。
所以,在回答你的第二个问题时,是的,这有点过头了。替换
public static int GetOrdinal() => Interlocked.Increment(myInt);使用
public static int GetOrdinal() => myInt++;https://stackoverflow.com/questions/59362155
复制相似问题