C#多线程

问题描述:

可以将ICollection<T>.Count属性获取器视为原子(因此,threadsafe)?C#多线程

谢谢。

完全取决于收集; ICollection<T>只是一个界面。

我知道的每个集合只是返回一个Int32字段,它的Count获取器,所以它通常是原子的。
但是,从来没有保证计数在您获取属性后不会改变。

不,因为你只能对实现做出这个假设,而不是接口。

  • 原子只会使意义实施不是接口。你可以有两个实现:一个线程安全的非线程安全实现。

  • List<T>由于不使用InterLocked,所以不是线程安全的。

+0

如何使用'Interlocked'使'Count'实现''列表'线程安全? 'Count'属性只是返回一个'int'字段,它是一个原子读取。当然,计数返回给调用者的时候总是有可能已经陈旧,但是如果使用了“互锁”的话,这种可能性就很大。 – LukeH 2011-03-31 13:50:56