zoukankan      html  css  js  c++  java
  • 自旋构造(更新)c#

    int x;
    
    void MultiplyXBy (int factor)
    {
      var spinWait = new SpinWait();
      while (true)
      {
        int snapshot1 = x;
        Thread.MemoryBarrier();
        int calc = snapshot1 * factor;
        int snapshot2 = Interlocked.CompareExchange (ref x, calc, snapshot1);
        if (snapshot1 == snapshot2) return;   // 没有被抢占
        spinWait.SpinOnce();
      }
    }
    do{
    Thread.SpinWait(10);  //自旋10毫秒
    Thread.Sleep(10);       //休眠10毫秒
    }while(true);
     
    结果:Thread.SpinWait(10);  CPU被占满 100% —— “自旋” (这个词的意思 或许就是说:没事做的时候,也要折腾一点事儿出来)。
    ——————————————————————
    当然:
    Thread.SpinWait(10);  精度准一点(没有线程的 唤醒时间,休眠10ms,实际休眠 10.001 ms)
    Thread.Sleep(10);  精度差一点(有线程的 唤醒时间,休眠10ms,实际休眠 10.1 ms)
    
    
    


  • 相关阅读:
    python函数
    python文件IO操作
    LAMP项目上线
    linux下的小工具
    linux下自有服务
    Lesson_Swift2
    枚举
    使用文件流下载附件
    Global中的Timer计时器
    IE11下的NPOI导出提示__doPostBack未定义解决方案
  • 原文地址:https://www.cnblogs.com/kexb/p/6793690.html
Copyright © 2011-2022 走看看