• C#多线程同步


    在.Net的某些对象里面,在读取里面的数据的同时还可以修改数据,这类的对象就是“线程安全”。
    但对于自己编写的代码段而言,就不需使用线程同步技术来保证数据的完整性和正确性了。

    记住这点:
    1、如果一个对象(或变量)不会同时被多个其他线程访问,那么这个对象是不需使用线程同步的。
    2、如果虽然有多个线程同时访问一个对象,但他们所访问的数据或方法并不相同(不交叉),那这种情况也不需使用线程同步。
    例如上例中的那个公司里面如果有 T 和 Q 两个人,但他们的工资分别是由 A 和 B 主管的,那么这个工资的处理就不需要线程同步了。
    3、如果一个对象会同时被多个其他线程访问,一般只需为这个对象添加线程同步的代码,而其他线程是不需添加额外代码的。

    Monitor的常用方法:Enter和Exit都是静态方法,作用跟lock语句的两个花括号一样。

    而使用 Mutex 就不需声明一个“令牌”对象了,但要实例化之后才可以使用:

    其中的WaitOne为等待方法,一直等到Mutex 被释放为止。初始的情况下,Mutex 对象是处于释放状态的,而一旦执行了WaitOne方法之后,它

    就被捕获了,一直到被调用了ReleaseMutex方法之后才被释放。

    使用这三种方法都有一个要注意的问题,就是在独占代码段里面如果引起了异常,可能会使“令牌”对象不被释放,这样程序就会一直地死等

    下去了。

  • 相关阅读:
    linux的crash之hardlock排查记录
    linux 巨页使用测试
    linux 巨页使用测试以及勘误1
    python判断两个list包含关系
    JavaScript--数据结构之栈
    JavaScript--数据结构与算法之列表
    js数组详解:
    基于jQuery的插件开发
    函数的理解:
    JS面向对象:
  • 原文地址:https://www.cnblogs.com/jfliuyun/p/1505876.html
Copyright © 2020-2023  润新知