zoukankan      html  css  js  c++  java
  • 命名空间System.Threading命名空间的同步锁 Monitor类

    官方备注:

    Monitor类通过向单个线程授予对象所来控制对对象的访问。对象所提供限制访问代码块的能力。当一个线程拥有对象的锁时,其他任何线程都不能获取该锁。还可以使用Monitor来确保不会允许其他任何线程访问正在由锁的所有者执行的应用程序代码,除非另一个线程正在使用其他的锁定对象执行改代码。

    Monitor类调用EnterTryEnter方法获取对象锁,使用Exit放弃对象锁,在Enter/TryEnterExit之间可调用Pause/PauseAllWait方法,Wait方法的调用会放弃对象锁并堵塞当前线程,当其他线程调用Pause/PauseAll方法通知其他线程对象锁(必须是针对相同的对象的锁)的状态发生变更,其他因调用Wait方法而放弃锁并堵塞线程的线程将重新获取之前放弃的锁,从而使线程继续直到Exit方法彻底放弃锁。

    当一个线程调用Wait导致暂时释放锁并堵塞线程后,如果没有其他线程调用Pause通知堵塞的线程可以重新获取锁,那么调用Wait的线程会一直处于堵塞状态,除非其他线程调用Pause/PauseAll方法

    MethodImplAttribute特性修饰某方法时,在构造方法中传入MethodImplOptions.Synchronized参数可使被修饰的方法只能在单线程中被调用,如果被修饰的方法是静态方法则锁住的是对象的类型,如果是实例方法,则锁住的是方法的对象的实例。

    //2015-03-29

  • 相关阅读:
    C# 上传下载文件
    ASP.Net
    C#计算程序执行时间
    关于vs连接access
    CSS
    C# 获取命名空间,类,方法名
    C# Split
    C#方法参数:params,ref,out,可选参数,命名参数
    java学习手记:JDK的安装配置
    Mysql/SQLServer数据类型与java基本数据类型的对应
  • 原文地址:https://www.cnblogs.com/beizaibeifang/p/4592870.html
Copyright © 2011-2022 走看看