zoukankan      html  css  js  c++  java
  • C#多线程同步

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

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

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

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

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

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

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

    下去了。

  • 相关阅读:
    对象进行比较
    java中length,length(),size()区别
    引用数据类型、自定义类
    java方法
    学员信息管理系统案例
    商品库存管理查看增减
    引用数据类型Scanner,Random
    Cantor表巧妙的做法
    UVA 11292 The dragon of Loowater勇士斗恶龙 11729 突击战 Commando War
    期末,祝不挂
  • 原文地址:https://www.cnblogs.com/jfliuyun/p/1505876.html
Copyright © 2011-2022 走看看