当前位置: 首页 > 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 时间过多,提高系统的性能和资源利用率。)。

http://www.lryc.cn/news/221364.html

相关文章:

  • 前端食堂技术周刊第 103 期:10 月登陆 Web 平台的新功能、TS 5.3 RC、React 2023 状态、高并发的哲学原理、Web 资源加载优先级
  • Python(三)数据类型转换
  • linq to sql性能优化技巧
  • ubuntu20.04 安装cudnn
  • 手机转接器实现原理,低成本方案讲解
  • RDS for MySQL 是什么
  • Java开发注意事项和细节说明
  • springboot中使用Java代码进行MongoDB集合数据备份
  • JavaEE的渊源
  • html中使用JQ自定义锚点偏移量
  • 032、数据增广*
  • 力扣最热一百题——盛水最多的容器
  • 备份扫描工具 god_bak
  • 软考 系统架构设计师系列知识点之数字孪生体(2)
  • CSS实现文本左右对齐
  • 利用exec命令进入docker容器时的报错问题
  • Java 与C++ 语言的一些区别
  • npm ERR! network ‘proxy‘ config is set properly. See: ‘npm help config解决方法
  • An Empirical Study of Instruction-tuning Large Language Models in Chinese
  • [MICROSAR Adaptive] --- 开发环境准备
  • Yolov5 batch 推理
  • 【ARFoundation学习笔记】ARFoundation基础(下)
  • 《UML和模式应用(原书第3版)》2024新修订译本部分截图
  • JSP 学生成绩查询管理系统eclipse开发sql数据库serlvet框架bs模式java编程MVC结构
  • 技术分享 | app自动化测试(Android)-- 属性获取与断言
  • flutter实现上拉到底部加载更多数据
  • UE4 Niagara Module Script 初次使用笔记
  • 【Spring Boot 源码学习】JedisConnectionConfiguration 详解
  • 联想服务器-HTTP boot安装Linux系统
  • 容器滚动更新过程中流量无损