Kon*_*ess 2 c# collections multithreading locking volatile
我很熟悉volatile(为了防止编译器优化涉及可以从多个线程访问的值的指令,总结),但我注意到我发现涉及volatile和.NET 3.5集合的示例(不是. NET 4 Concurrent集合.我知道它们是什么,但我当前的上下文不允许我使用.NET 4.)从未volatile应用于集合本身.当然object,从多个线程访问它时,需要锁定集合(或相应的锁定),但有没有理由不应该标记集合volatile?集合的类型是否重要(即List值类型与List参考类型的比较)?
挥发性几乎肯定并不意味着你的想法.这是不使用它的主要原因.(这些天我拒绝尝试描述易失性的含义.它太复杂而不能整齐地解释,除非你是一位记忆模型专家,否则几乎总是错误的做法,在这种情况下你绝对不需要我解释它您.)
如果你锁定了一个合适的物体,你认为它会给你带来什么好处?在获取和释放锁定时,你已经要经过适当的内存防护......我怀疑使用volatile变量本身的任何原因都是基于一种误解.