zoukankan      html  css  js  c++  java
  • [MethodImpl(MethodImplOptions.Synchronized)]

    [MethodImpl(MethodImplOptions.Synchronized)]用来实现方法级别的线程同步

    MethodImplOptions 枚举:定义如何实现某方法的详细信息。

    枚举成员:

    AggressiveInlining:

    此方法应内联(如果可能)。

    ForwardRef:

    此方法被声明,但提供该方法实现的在其他地方。

    InternalCall:

    内部调用是对在公共语言运行时内部实现的方法的调用。

    NoInlining:

    不能内联该方法。内联是用方法主体代替方法调用的优化。

    NoOptimization:

    调试可能的代码生成问题时优化该方法不是实时 (JIT) 编译器和本机代码生成(请参见 )。

    PreserveSig:

    此方法签名完全按声明的样子导出。

    Synchronized:

    该方法一次只能由一个线程执行。静态方法锁定类型,而实例方法锁定实例。在任何实例函数中只能执行一个线程,并且在类的任何静态函数中只能执行一个线程。

    Unmanaged:

    该方法以非托管代码实现。

    示例:

      static void Main(string[] args)
            {
                Program p = new Program();
                for (int i = 0; i < 10; i++)
                {
                    Thread t = new Thread(p.Execute);
                    t.Start();
                }
            }
    
            [MethodImpl(MethodImplOptions.Synchronized)]
            public void Execute()
            {
                Console.WriteLine("Excute at {0}", DateTime.Now);
                Thread.Sleep(2000);
            }
    AggressiveInlining

    此方法应内联(如果可能)。

      ForwardRef

    此方法被声明,但提供该方法实现的在其他地方。

      InternalCall

    内部调用是对在公共语言运行时内部实现的方法的调用。

      NoInlining

    不能内联该方法。内联是用方法主体代替方法调用的优化。

      NoOptimization

    调试可能的代码生成问题时优化该方法不是实时 (JIT) 编译器和本机代码生成(请参见 )。

      PreserveSig

    此方法签名完全按声明的样子导出。

      Synchronized

    该方法一次只能由一个线程执行。静态方法锁定类型,而实例方法锁定实例。在任何实例函数中只能执行一个线程,并且在类的任何静态函数中只能执行一个线程。

      Unmanaged

    该方法以非托管代码实现。

  • 相关阅读:
    USACO 5.5 Twofive
    USACO 5.4 Telecowmunication
    USACO 5.4 Character Recognition
    BZOJ 1001: [BeiJing2006]狼抓兔子
    USACO 5.4 Canada Tour
    USACO 5.3 Big Barn
    USACO 5.3 Network of Schools
    USACO 5.3 Window Area
    2017辽宁冬令营-4.蚂蚁
    2017辽宁冬令营-3.斐波那契
  • 原文地址:https://www.cnblogs.com/zhangzhi19861216/p/4980700.html
Copyright © 2011-2022 走看看