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;  
}


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

相关文章推荐

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

简介:  函数名: sleep   功 能: 执行挂起一段时间   用 法: unsigned sleep(unsigned seconds);   在VC中使用带上头文件  ...

usleep使用

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

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

其它时间、日期操作函数:http://blog.csdn.net/u011170660/article/details/38318765

Delphi7高级应用开发随书源码

  • 2003年04月30日 00:00
  • 676KB
  • 下载

windows下获取时间和计算时间差的几种方法总结

一、标准C和C++都可用 1、获取时间用time_t time( time_t * timer ),计算时间差使用double difftime( time_t timer1, time_t tim...

windows下实现微秒级的延时

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

Windows下使用MinGW+msys编译FFmpeg错误

In file included from libavformat/hlsenc.c:26:0: c:\mingw\include\unistd.h:79:1: error: expected ',...

windows下ffmpeg+eclipse编译

参考: http://jingyan.baidu.com/article/456c463b67b4310a59314468.html 下载: eclipse(JDK等) minGW(minGW+...
  • uselym
  • uselym
  • 2015年03月24日 22:11
  • 1064

I2C总线时序模拟(二)-加深理解总线协议

/******************************************************************** 此程序是I2C操作平台(主方式的软件平台)的底层的C子程序,...

stm32之GPIO的理解

写这个博客着重缕清自己的思路,对基础的东西有个更好的理解。GPIO中的常用的寄存器 GPIOx_CRH 与GPIOx_CRL : 可以配置GPIO的各种模式,进行初始化。 GPIOx_BSR...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Windows与Linux系统实现延迟的比较+Windows下实现微秒延迟
举报原因:
原因补充:

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