zoukankan      html  css  js  c++  java
  • 多线程.Thread.Sleep方法

    多线程执行中,调用Thread.Sleep()方法

    分情况:

    1。

    单核的情况下

    是把当前正在工作的主线程停止(也就是从把线程变成非工作线程)。

    其他需要工作的线程来争夺CPU这个闲下来的核。谁争夺到了谁就开始执行。

    直到下一次Sleep的时间到了,又重新来争夺这个CPU的核。但是这里要等到这个核空闲下来才行

    (也就是调用ThreadSleep()或工作线程的任务结束。有点类似于异步的概念)

    2.

    多核的情况下

    是把当前正在工作的主线程停止(也就是从把线程变成非工作线程).

    如果其他的核的数量足以支撑其他所有线程,那么就不需要来争夺刚刚闲下来的CPU的核。

    等到前面Sleep的时间到了就继续执行刚才的任务。

    如果核的数量不够让所有线程同时执行。那么就和1一样了。

    所以有人会在代码里写TheadSleep(0).其实就是强制让CPU空闲下来,所有线程重新参与竞争。这个技巧可以防止有时候线程假死,其他线程有进不来的。

  • 相关阅读:
    深入js——this
    深入js——作用域链
    深入js——变量对象
    深入js——执行上下文栈
    vue为什么不能检测数组的变化
    常用的文件下载方式
    vue中修改第三方组件的样式不生效
    Neo4j 学习笔记2
    Neo4j 学习笔记1
    idea git 命令
  • 原文地址:https://www.cnblogs.com/fengxiaoling/p/9794089.html
Copyright © 2011-2022 走看看