睡眠() vs _sleep() 函数
Sleep() vs _sleep() functions
目前,我正在为Windows 开发一个旧项目(用 C 和 C++ 编写(,使用 Visual Studio 2010 或更低版本。我们希望将其更新为较新版本,例如Visual Studio 2015或2017。
我发现Microsoft不再支持_sleep()
函数,我将使用Sleep()
函数。
我没有找到旧_sleep()
函数的等效文档,我想知道两个函数的行为是否完全相同?这篇 MSDN 帖子让我想知道唯一的区别是否在于参数的类型?
提前感谢您的回答。
正如 RbMm 所提到的,_sleep
已经实现为围绕 Sleep
的非常薄的包装器:
void __cdecl _sleep(unsigned long dwDuration)
{
if (dwDuration == 0) {
dwDuration++;
}
Sleep(dwDuration);
}
为了确认,我们可以对其进行测试。幸运的是,它很容易测试:
#include <iostream>
#include <chrono>
#include <windows.h>
#include <stdlib.h>
using namespace std::chrono_literals;
int main() {
auto tm1 = std::chrono::system_clock::now();
_sleep(250);
auto tm2 = std::chrono::system_clock::now();
Sleep(250);
auto tm3 = std::chrono::system_clock::now();
std::cout << "_sleep took " << (tm2-tm1)/1ms << " ms, Sleep took " << (tm3-tm2)/1ms << " msn";
}
输出:
_sleep took 250 ms, Sleep took 250 ms
因此,它看起来_sleep
和Sleep
在特定毫秒数内处于睡眠状态。
_sleep
是MSVC CRT函数,Sleep
是Windows API。
因此,在 MSVC 中,它们应该是可互换的。
一个微小的区别是,在0
争论的情况下,_sleep
睡了1ms
,而Sleep
根本不睡觉。
相关文章:
- "error: no matching function for call to"构造函数错误
- 什么时候调用组成单元对象的析构函数
- 继承函数的重载解析
- 为什么随机数生成器不在void函数中随机化数字,而在main函数中随机化
- C++模板来检查友元函数的存在
- 递归函数计算序列中的平方和(并输出过程)
- 在定时器回调函数中使用 Sleep() 会导致C++出现问题吗?
- 为什么Main函数上的Sleep()会停止所有线程
- Windows.h Sleep(int) 函数是否浪费?
- 在Xcode(mac api)上,是否有任何带有Sleep()函数/命令的文件?
- 线程中的 sleep() 函数的目的是什么?
- 为什么函数 sleep() 在 klee 执行 Objectfile 时不能工作?
- C++函数 Sleep() 在一段代码之前执行
- 为什么sleep in函数忽略了程序中的几个顺序指令
- Sleep() 函数之前的代码不起作用
- 如何在不使用 sleep() 的情况下使用 ontimer 函数延迟进程
- Sleep()函数用法
- WinAPI Sleep()函数调用的睡眠时间比预期的要长
- 解释在Android上执行的Unix sleep()函数的行为
- 我可以用什么代替sleep()函数?