• [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

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

  • 相关阅读:
    log4j学习
    数据库索引
    php 通过exec 创建git分支失败
    Nginx 常用全局变量 及Rewrite规则详解
    Jetbrains phpstorm pycharm 免费授权注册码
    Nginx return 关键字配置小技巧
    PHP 加密 和 解密 方法
    Nginx 禁用IP IP段
    Yii2 捕获错误日志
    transform 实现响应式绝对居中
  • 原文地址:https://www.cnblogs.com/zhangzhi19861216/p/4980700.html
Copyright © 2020-2023  润新知