Sleep与WaitForSingleObject/WaitForXXXX的区别
看了x司的项目代码,几乎99%地方都用Sleep(), 近乎乱用,或许不知wait存在。
其实,Sleep与WaitForSingleObject/WaitForXXXX/Wait是有很大区别的。
首先汉字翻译,已经做出了明显区分,前者是睡眠,后者是等待。
睡眠=等待?睡眠≠等待!
线程本身是有状态的,也存在几个不同状态的队列的,状态不同,它就切入到了不同的队列。
所谓的睡眠,就是挂起当前线程,主动放弃当前线程余下的时间片,线程进到了阻塞状态了。
所谓的超时等待,是给定最大超时等待,不主动放弃当前线程时间片,线程不睡眠,先进入等待队列,一旦有信号触发就会立即唤醒,线程状态切到Running,往下跑;
如果是Sleep就会放弃当前时间片并且睡眠,无法通过有信号而唤醒,一直阻塞在这里等待时间满,还会导致僵死。
所以,编程中,尽量不要用sleep去等待,特别是UI相关编程。
特别是需要根据特定信号唤醒的场景,原理上讲必须用Wait.
Sleep与WaitForSingleObject/WaitForXXXX的区别相关推荐
- win32:超时Timeout和延时Delay的区别
我在很久一些写了一篇<Sleep与WaitForSingleObject/WaitForXXXX的区别>,已经阐明了Sleep和WaitForxxx的区别了,前者是睡眠,后者是等待.睡眠≠ ...
- 事件EVENT与waitforsingleobject的使用以及Mutex与Event的区别
Mutex与Event控制互斥事件的使用详解最近写一程序,误用了Mutex的功能,错把Mutex当Event用了.[Mutex]使用Mutex的主要函数:CreateMutex.ReleaseMute ...
- WaitForSingleObject和WaitForMultipleObjects用法
转自:http://www.360doc.com/content/10/0512/09/1072296_27178529.shtml 等待函数可使线程自愿进入等待状态,直到一个特定的内核对象变为已通知 ...
- CreateThread 和_beginthreadex区别
本文将带领你与多线程作第一次亲密接触,并深入分析CreateThread与_beginthreadex的本质区别,相信阅读本文后你能轻松的使用多线程并能流畅准确的回答CreateThread与_beg ...
- 多线程之 CreateThread与_beginthreadex本质区别
本文将带领你与多线程作第一次亲密接触,并深入分析CreateThread与_beginthreadex的本质区别,相信阅读本文后你能轻松的使用多线程并能流畅准确的回答CreateThread与_beg ...
- java 信号量 互斥锁_线程同步(互斥锁与信号量的作用与区别)
"信号量用在多线程多任务同步的,一个线程完成了某一个动作就通过信号量告诉别的线程,别的线程再进行某些动作(大家都在semtake的时候,就阻塞在 哪里).而互斥锁是用在多线程多任务互斥的,一 ...
- 临界区,互斥量,信号量,事件的区别
临界区(Critical section)与互斥体(Mutex)的区别 1.临界区只能用于对象在同一进程里线程间的互斥访问:互斥体可以用于对象进程间或线程间的互斥访问. 2.临界区是非内核对象,只在用 ...
- 【转】windows多线程CreateThread与_beginthreadex本质区别
本文将带领你与多线程作第一次亲密接触,并深入分析CreateThread与_beginthreadex的本质区别,相信阅读本文后你能轻松的使用多线程并能流畅准确的回答CreateThread与_beg ...
- 多线程 CreateThread与_beginthreadex本质区别
本文参考了 http://blog.csdn.net/morewindows/article/details/7421759 主函数创建一个线程,并且等待它执行完毕 #include <iost ...
最新文章
- scrapy的几个文件属性
- 第十六届智能车竞赛西部赛区
- 记录一下Python-Qt中按钮点击事件无响应解决方案
- 每天一道LeetCode-----将用数组表示的整数加一,两个用字符串表示的(二进制)数相加
- Python中用input()和print()体现输入输出重定向
- Python Socket编程初探
- Discuz! X2.5 添加风格模板
- 【sklearn第八讲】广义线性模型
- java炒股软件_股票软件java,中国软件股票怎么样
- 天翼云联手平凯星辰共建开源分布式数据库实验室
- AXI总线 详细整理
- 【深度好文】二维图像傅里叶变换 YYDS
- java 解析证书_Java x509证书解析类
- 【iOS】UI基础Day2-笔记(毛玻璃、帧动画、音效等)
- PS:换背景天空(简单抠图)
- 编译原理陈火旺第三版第七章课后题答案
- Ubuntu 16.04系统安装VS Code流程详解
- 2020-2-16 B - Math
- 阿里云OSS 分块上传的代码整理
- 前端面试题HTML+CSS