Windows与Linux系统实现延迟的比较+Windows下实现微秒延迟

原创 2016年05月30日 15:03:28
在VC中Sleep中的第一个英文字符为大写的"S"
在标准C中是sleep, 不要大写。下面使用大写的来说明(具体用什么看你用什么编译器. 简单的说VC用Sleep, 别的一律使用sleep)
Sleep函数的一般形式:
            Sleep(unsigned long);

其中,Sleep()里面的单位,是以毫秒为单位,所以如果想让函数滞留1秒的话,应该是

#inlcude <windows.h>
Sleep(1000);


在Linux下,sleep中的“s”不大写

sleep()单位为秒,usleep()里面的单位是微秒。

在内核中,sleep的实现是由pause函数和alarm函数两个实现的。

特别注意在Codeblocks环境下是无法使用sleep函数的,因为在windows上Codeblocks采用mingw(Gnu在Window环境下的编译器,

可以充分使用WindowsApi)作为编译器,而在stdlib.h中sleep的说明如下:_CRTIMP void __cdecl __MINGW_NOTHROW _sleep (unsigned long) __MINGW_ATTRIB_DEPRECATED;可以认为mingw舍弃了sleep函数,建议用Sleep实现sleep。

#include <unistd.h>
sleep(1);


Windows下实现微秒延迟(并不完全精确)

void delay_us(void)
{
  LARGE_INTEGER litmp;
  LONGLONG QPart1, QPart2;
  double dfMinus, dfFreq, dfTim;
  QueryPerformanceFrequency(&litmp);
  dfFreq = (double)litmp.QuadPart;// 获得计数器的时钟频率
  QueryPerformanceCounter(&litmp);
  QPart1 = litmp.QuadPart;// 获得初始值
  do {
    QueryPerformanceCounter(&litmp);
    QPart2 = litmp.QuadPart;//获得中止值
    dfMinus = (double)(QPart2-QPart1);
    dfTim = dfMinus / dfFreq;// 获得对应的时间值,单位为秒
  }while(dfTim<0.000001);
}
int main()  
{  
   printf("The start clock is: %ld\n", clock());  
   delay_us();
   printf("The end clock is: %ld\n", clock());  
   system("pause");
   return 0;  
}


版权声明:本文为博主原创文章,未经博主允许不得转载。

usleep使用

前几天分析MAC上的一段代码,偶然看到usleep这个函数,打开MSDN居然查不到这个函数,对应的在windows上,只有Sleep函数。百度了一下:语法: void usleep(int micro...
  • borise123456
  • borise123456
  • 2011年01月01日 20:25
  • 6508

linux和windows下,C/C++的sleep函数

简介:  函数名: sleep   功 能: 执行挂起一段时间   用 法: unsigned sleep(unsigned seconds);   在VC中使用带上头文件  ...
  • jiangxinyu
  • jiangxinyu
  • 2012年07月17日 11:35
  • 65846

[C++]sleep 和 usleep区别

函数名: sleep 头文件: #include // 在VC中使用带上头文件         #include  // 在gcc编译器中,使用的头文件因gcc版本的不同而不同 功  能: ...
  • cn_wk
  • cn_wk
  • 2017年03月22日 20:54
  • 1879

linux 的sleep()、usleep()、nanosleep()函数的区别

其它时间、日期操作函数:http://blog.csdn.net/u011170660/article/details/38318765
  • u011170660
  • u011170660
  • 2014年08月15日 17:09
  • 6635

windows下延时函数

VC中提供了很多关于时间操作的函数,编写程序时我们可以跟据定时的不同精度要求选择不同的时间函数来完成定时和计时操作。 方式一:VC中的WM_TIMER消息映射能进行简单的时间控制。首先调用函数Set...
  • w285868925
  • w285868925
  • 2013年01月25日 15:38
  • 6725

windows下实现微秒级的延时

1.微秒级的延时肯定不能基于消息(SetTimer函数),因为一出现消息堵塞等就会影响精 度,而且setTimer单位才是毫秒.实际响应时间可能要到55毫秒左右. 2.微秒级的延时也不能不能基于中...
  • ncistcn
  • ncistcn
  • 2010年11月17日 18:28
  • 9048

Windows高精度微秒级(并发)定时器实现

自从上次封装微秒延时函数后,利用空闲时间试着封装一个微秒定时器(类似MFC定时器形式)使用起来效果还不错。关于定时器的几点介绍: 1.设计采用了自动释放定时器节点方式(增加虚析构函数在内部做...
  • a29562268
  • a29562268
  • 2017年04月10日 21:35
  • 1617

windows系统中得到精确到微妙的时间

windows系统中得到精确到微妙的时间 #include #include LARGE_INTEGER t1,t2,feq; QueryPerformanceFrequency(&f...
  • jfkidear
  • jfkidear
  • 2012年03月23日 11:29
  • 812

Linux 下 毫秒级延时函数

/* 毫秒级 延时 */ void Sleep(int ms) { struct timeval delay; delay.tv_sec = 0; delay.tv_usec = ms * 10...
  • bywayboy
  • bywayboy
  • 2014年03月05日 16:17
  • 6009

windows开发,如何使Sleep函数精确到1毫秒

1.我们知道,Sleep函数和GetTickCount函数,时间精度只有16ms左右, 而不是1ms。这样的话对于某些对时间要求比较高的应用场景,就不能 直接这么用了。 2.我介绍一个好方法,使用ti...
  • yuhengyue
  • yuhengyue
  • 2017年09月27日 14:06
  • 479
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Windows与Linux系统实现延迟的比较+Windows下实现微秒延迟
举报原因:
原因补充:

(最多只允许输入30个字)