看了x司的项目代码,几乎99%地方都用Sleep(), 近乎乱用,或许不知wait存在。

其实,Sleep与WaitForSingleObject/WaitForXXXX/Wait是有很大区别的。

首先汉字翻译,已经做出了明显区分,前者是睡眠,后者是等待。

睡眠=等待?睡眠≠等待!

线程本身是有状态的,也存在几个不同状态的队列的,状态不同,它就切入到了不同的队列。

所谓的睡眠,就是挂起当前线程,主动放弃当前线程余下的时间片,线程进到了阻塞状态了。

所谓的超时等待,是给定最大超时等待,不主动放弃当前线程时间片,线程不睡眠,先进入等待队列,一旦有信号触发就会立即唤醒,线程状态切到Running,往下跑;

如果是Sleep就会放弃当前时间片并且睡眠,无法通过有信号而唤醒,一直阻塞在这里等待时间满,还会导致僵死。

所以,编程中,尽量不要用sleep去等待,特别是UI相关编程。

特别是需要根据特定信号唤醒的场景,原理上讲必须用Wait.

Sleep与WaitForSingleObject/WaitForXXXX的区别相关推荐

  1. win32:超时Timeout和延时Delay的区别

    我在很久一些写了一篇<Sleep与WaitForSingleObject/WaitForXXXX的区别>,已经阐明了Sleep和WaitForxxx的区别了,前者是睡眠,后者是等待.睡眠≠ ...

  2. 事件EVENT与waitforsingleobject的使用以及Mutex与Event的区别

    Mutex与Event控制互斥事件的使用详解最近写一程序,误用了Mutex的功能,错把Mutex当Event用了.[Mutex]使用Mutex的主要函数:CreateMutex.ReleaseMute ...

  3. WaitForSingleObject和WaitForMultipleObjects用法

    转自:http://www.360doc.com/content/10/0512/09/1072296_27178529.shtml 等待函数可使线程自愿进入等待状态,直到一个特定的内核对象变为已通知 ...

  4. CreateThread 和_beginthreadex区别

    本文将带领你与多线程作第一次亲密接触,并深入分析CreateThread与_beginthreadex的本质区别,相信阅读本文后你能轻松的使用多线程并能流畅准确的回答CreateThread与_beg ...

  5. 多线程之 CreateThread与_beginthreadex本质区别

    本文将带领你与多线程作第一次亲密接触,并深入分析CreateThread与_beginthreadex的本质区别,相信阅读本文后你能轻松的使用多线程并能流畅准确的回答CreateThread与_beg ...

  6. java 信号量 互斥锁_线程同步(互斥锁与信号量的作用与区别)

    "信号量用在多线程多任务同步的,一个线程完成了某一个动作就通过信号量告诉别的线程,别的线程再进行某些动作(大家都在semtake的时候,就阻塞在 哪里).而互斥锁是用在多线程多任务互斥的,一 ...

  7. 临界区,互斥量,信号量,事件的区别

    临界区(Critical section)与互斥体(Mutex)的区别 1.临界区只能用于对象在同一进程里线程间的互斥访问:互斥体可以用于对象进程间或线程间的互斥访问. 2.临界区是非内核对象,只在用 ...

  8. 【转】windows多线程CreateThread与_beginthreadex本质区别

    本文将带领你与多线程作第一次亲密接触,并深入分析CreateThread与_beginthreadex的本质区别,相信阅读本文后你能轻松的使用多线程并能流畅准确的回答CreateThread与_beg ...

  9. 多线程 CreateThread与_beginthreadex本质区别

    本文参考了 http://blog.csdn.net/morewindows/article/details/7421759 主函数创建一个线程,并且等待它执行完毕 #include <iost ...

最新文章

  1. scrapy的几个文件属性
  2. 第十六届智能车竞赛西部赛区
  3. 记录一下Python-Qt中按钮点击事件无响应解决方案
  4. 每天一道LeetCode-----将用数组表示的整数加一,两个用字符串表示的(二进制)数相加
  5. Python中用input()和print()体现输入输出重定向
  6. Python Socket编程初探
  7. Discuz! X2.5 添加风格模板
  8. 【sklearn第八讲】广义线性模型
  9. java炒股软件_股票软件java,中国软件股票怎么样
  10. 天翼云联手平凯星辰共建开源分布式数据库实验室
  11. AXI总线 详细整理
  12. 【深度好文】二维图像傅里叶变换 YYDS
  13. java 解析证书_Java x509证书解析类
  14. 【iOS】UI基础Day2-笔记(毛玻璃、帧动画、音效等)
  15. PS:换背景天空(简单抠图)
  16. 编译原理陈火旺第三版第七章课后题答案
  17. Ubuntu 16.04系统安装VS Code流程详解
  18. 2020-2-16 B - Math
  19. 阿里云OSS 分块上传的代码整理
  20. 前端面试题HTML+CSS

热门文章

  1. word填充、自动生成、添加水印
  2. 大华监控资料搜集记录
  3. ssl证书验证失败打不开网页
  4. Invalid use of argument matchers
  5. ICML话题:机器学习近年来之怪现状
  6. 维权有期?韭菜与大佬派出所同框
  7. ST-LINK无法识别;固件升级/降级方法
  8. MQ实现DEMO-入门
  9. 开个博客,以今日为起点,时间六个月——未来一念之间!
  10. 如何使用python在终端输出彩色字体