Windows编程--线程的睡眠方式
2011-01-05 14:32
363 查看
线程也能告诉系统,它不想在某个时间段内被调度。这是通过调用Sleep函数来实现的:
VOID Sleep(DWORDdwMilliseconds);
该函数可使线程暂停自己的运行,直到dwMilliseconds过去为止。关于Sleep函数。
有下面几个重要问题值得注意:
1、调用Sleep,可使线程自愿放弃它剩余的时间片。
2、系统将在大约的指定毫秒数内使线程不可调度。如果告诉系统,想睡眠100ms,那么可以睡眠大约这么长时间,但是也可能睡眠数秒钟或者数分钟。记住, Windows不是个实时操作系统。虽然线程可能在规定的时间被唤醒,但是它能否做到,取决于系统中还有什么操作正在进行。
3、可以调用Sleep,并且为dwMilliseconds参数传递INFINITE。这将告诉系统永远不要调度该线程。这不是一件值得去做的事情。最好是让线程退出,并还原它的堆栈和内核对象。
4、可以将0传递给Sleep。调用线程将释放剩余的时间片,并迫使系统调度另一个线程。但是,系统可以对刚刚调用Sleep的线程重新调度。如果不存在多个拥有相同优先级的可调度线程,就会出现这种情况。
FangSH 2010-12-28
VOID Sleep(DWORDdwMilliseconds);
该函数可使线程暂停自己的运行,直到dwMilliseconds过去为止。关于Sleep函数。
有下面几个重要问题值得注意:
1、调用Sleep,可使线程自愿放弃它剩余的时间片。
2、系统将在大约的指定毫秒数内使线程不可调度。如果告诉系统,想睡眠100ms,那么可以睡眠大约这么长时间,但是也可能睡眠数秒钟或者数分钟。记住, Windows不是个实时操作系统。虽然线程可能在规定的时间被唤醒,但是它能否做到,取决于系统中还有什么操作正在进行。
3、可以调用Sleep,并且为dwMilliseconds参数传递INFINITE。这将告诉系统永远不要调度该线程。这不是一件值得去做的事情。最好是让线程退出,并还原它的堆栈和内核对象。
4、可以将0传递给Sleep。调用线程将释放剩余的时间片,并迫使系统调度另一个线程。但是,系统可以对刚刚调用Sleep的线程重新调度。如果不存在多个拥有相同优先级的可调度线程,就会出现这种情况。
FangSH 2010-12-28
相关文章推荐
- Windows编程-- 用户方式中线程的同步---关键代码段(临界区)
- Windows编程-- 用户方式中线程的同步---原子访问:互锁的函数家族
- windows编程(2)-进程,线程
- Windows-核心编程-04-进程-获取进程 线程 模块(DLL)信息
- Java并发编程:线程间协作的两种方式:wait、notify、notifyAll和Condition
- windows下编程创建目录快捷方式
- Windows 核心编程 (线程)要点
- windows中结束线程的方式
- windows下进程和线程的关系、通信方式
- Windows编程--线程的基本知识
- windows核心编程--线程高级
- Java并发编程:线程间协作的两种方式:wait、notify、notifyAll和Condition
- Java并发编程:线程间协作的两种方式:wait、notify、notifyAll和Condition
- Java并发编程:线程间协作的两种方式:wait、notify、notifyAll和Condition
- JDBC 3.0 RowSet, 类似于windows中ADO的编程方式
- Windows编程_Lesson006_初识线程
- windows 多线程编程 之 线程创建
- 基于visual c++之windows核心编程代码分析(12)使用信号量同步线程
- 多线程编程之Windows同步方式
- 【java】线程睡眠的新方式讲解