zoukankan      html  css  js  c++  java
  • c# 线程同步问题(about volatile)

    这个古老的话题,

    这里是一个大杂烩;

    首先让我们看stackoverflow中一个经典的问题:

    Volatile vs. Interlocked vs. lock

    然后连接看答案:

    https://stackoverflow.com/questions/154551/volatile-vs-interlocked-vs-lock

    这里的误区,主要是对volatile的解释和使用;

    关于volatile的解释和示例:

    http://www.jaylee.org/post/2004/08/05/Dont-get-C-volatile-the-wrong-way.aspx

    这里还有一篇较好的文章:

    http://igoro.com/archive/volatile-keyword-in-c-memory-model-explained/ (这篇文章讲得非常好,非常好,强烈推荐)

    一些文字摘要:

    The memory model is a fascinating topic – it touches on hardware, concurrency, compiler optimizations, and even math.

    The memory model defines what state a thread may see when it reads a memory location modified by other threads. For example, if one thread updates a regular non-volatile field, it is possible that another thread reading the field will never observe the new value. This program never terminates (in a release build):

    这里我们再进行  synchronization  中 Barrier 的使用;

    https://msdn.microsoft.com/en-us/library/system.threading.barrier(v=vs.110).aspx (微软官网示例方法)

    它的另外一种用法滴啊;

    How to: Synchronize Concurrent Operations with a Barrier

    https://docs.microsoft.com/en-us/dotnet/standard/threading/how-to-synchronize-concurrent-operations-with-a-barrier

    还有这个例子:

    http://dotnetpattern.com/threading-barrier

    这里关于 readerwriterlockslim  and  readerwritelock 之间的基本区别;

    ReaderWriterLockSlim is similar to ReaderWriterLock, but it has simplified rules for recursion and for upgrading and downgrading lock state. 

    ReaderWriterLockSlimavoids many cases of potential deadlock. In addition, the performance of ReaderWriterLockSlim is significantly better than ReaderWriterLockReaderWriterLockSlim is recommended for all new development.

    关于readerWriterLockSlim 是文章:

    https://msdn.microsoft.com/en-us/library/system.threading.readerwriterlockslim.aspx

    关于c#同步机制的一个总结:

    https://docs.microsoft.com/en-us/dotnet/standard/threading/overview-of-synchronization-primitives

  • 相关阅读:
    [RxSwift教程]14、其他操作符:delay、materialize、timeout等
    [RxSwift教程]13、连接操作符:connect、publish、replay、multicast
    Java虚拟机类加载机制及双亲委派模式分析
    面试系列-如何设计一个类
    谈谈 MySQL 的 JSON 数据类型
    Java 多线程编程(2-异步中包含同步)
    还堵在高速路上吗?带你进入Scratch世界带你飞
    SQL Server SSIS相关介绍
    SQL Server开启READ_COMMITTED_SNAPSHOT
    SqlServer中select语句引起的死锁
  • 原文地址:https://www.cnblogs.com/mc67/p/7474345.html
Copyright © 2011-2022 走看看