当前位置: 首页 > news >正文

Sleep(0)、Sleep(1)、SwitchToThread()

  1. timeout 参数为 0 时(如 Sleep(0)),操作系统会检查可运行队列中是否有高于或等于当前线程优先级的其他就绪线程。如果有,当前线程将被移除并放弃处理器时间,让其他线程执行。如果没有高优先级的线程,当前线程将继续执行。
  2. timeout 参数大于 0 时(如 Sleep(1)),当前线程会被移除一段时间,持续时间约等于 timeout 参数指定的毫秒数。通常情况下,系统的时间精度为 10 毫秒,所以任何小于 10 毫秒但大于 0 毫秒的睡眠时间都会被向上调整为 10 毫秒。
  3. 使用 SwitchToThread() 方法时,它会让出一个时间切片给其他就绪线程,而不考虑它们的优先级如何。

综上所述,如果希望当前线程在一段时间内真正休眠,最好使用 Sleep(1)SwitchToThread(),因为它们可以实际让出处理器时间给其他线程。 Sleep(0) 在没有其他高优先级线程的情况下通常不会让出处理器时间,而 SwitchToThread() 会让出时间切片给其他线程(实际上,SwitchToThread() 会检查系统中是否有其他就绪线程,如果有,它会主动放弃当前线程的时间切片,让其他线程运行。但如果没有其他线程就绪,当前线程将继续执行。这个方法旨在鼓励线程主动让出时间切片,以减少资源浪费,但它并不能保证上下文切换。),而 Sleep(1) 会引发线程上下文切换(无论是否有其他就绪线程,Sleep(1) 都会引发线程上下文切换,因为它要求当前线程放弃 CPU 的使用权,并等待指定的时间。这有助于避免线程占用 CPU 时间过多,提高系统的性能和资源利用率。)。

相关文章:

  • Python武器库开发-常用模块之subprocess模块(十九)
  • ES 未分片 导致集群状态飘红
  • python机器学习——决策树
  • Android transform旋转rotate圆角矩形图roundedCorners,Kotlin
  • uniapp中地图定位功能实现的几种方案
  • Technology Strategy Pattern 学习笔记2-Creating the Strategy-World Context
  • 【系统架构设计】架构核心知识:4 系统可靠性分析与设计
  • 华为机试练习题:HJ11 数字颠倒
  • 【MongoDB】索引 - 单字段索引
  • 记一次经典SQL双写绕过题目[极客大挑战 2019]BabySQL 1
  • 机器视觉 opencv 深度学习 驾驶人脸疲劳检测系统 -python 计算机竞赛
  • react 实现chatGPT的打印机效果 兼容富文本,附git地址
  • 【系统架构设计】计算机公共基础知识: 6 知识产权与标准化
  • Android ViewGroup 浅析一
  • Redis7--基础篇2(Redis的十大数据类型及常用命令)
  • 【391天】每日项目总结系列128(2018.03.03)
  • 〔开发系列〕一次关于小程序开发的深度总结
  • 2017 前端面试准备 - 收藏集 - 掘金
  • bearychat的java client
  • Cumulo 的 ClojureScript 模块已经成型
  • Java 23种设计模式 之单例模式 7种实现方式
  • Java 最常见的 200+ 面试题:面试必备
  • Netty+SpringBoot+FastDFS+Html5实现聊天App(六)
  • select2 取值 遍历 设置默认值
  • SSH 免密登录
  • 将回调地狱按在地上摩擦的Promise
  • 深入浏览器事件循环的本质
  • 移动端唤起键盘时取消position:fixed定位
  • #### go map 底层结构 ####
  • #NOIP 2014# day.1 生活大爆炸版 石头剪刀布
  • #NOIP 2014#day.2 T1 无限网络发射器选址
  • (2020)Java后端开发----(面试题和笔试题)
  • (C++20) consteval立即函数
  • (env: Windows,mp,1.06.2308310; lib: 3.2.4) uniapp微信小程序
  • (js)循环条件满足时终止循环
  • (react踩过的坑)antd 如何同时获取一个select 的value和 label值
  • (动态规划)5. 最长回文子串 java解决
  • (附源码)php新闻发布平台 毕业设计 141646
  • (附源码)spring boot校园健康监测管理系统 毕业设计 151047
  • (离散数学)逻辑连接词
  • (十)T检验-第一部分
  • (十八)devops持续集成开发——使用docker安装部署jenkins流水线服务
  • (转)Windows2003安全设置/维护
  • .class文件转换.java_从一个class文件深入理解Java字节码结构
  • .mat 文件的加载与创建 矩阵变图像? ∈ Matlab 使用笔记
  • .NET 3.0 Framework已经被添加到WindowUpdate
  • .NET CF命令行调试器MDbg入门(一)
  • .Net程序猿乐Android发展---(10)框架布局FrameLayout
  • .NET企业级应用架构设计系列之结尾篇
  • .sh
  • @Documented注解的作用
  • @Tag和@Operation标签失效问题。SpringDoc 2.2.0(OpenApi 3)和Spring Boot 3.1.1集成
  • [14]内置对象
  • [Android 13]Input系列--获取触摸窗口
  • [android]-如何在向服务器发送request时附加已保存的cookie数据