专栏首页C语言入门到精通基础知识 | 每日一练(163)

基础知识 | 每日一练(163)

基础知识练习

读者:怎样实现精度小于秒的延时或记录用户回应的时间?

小林:有可移植解决方法。下面是一些你可以在你的系统中寻找的函数: clock(), delay(), ftime(), getimeofday(), msleep(), nap(), napms(),

nanaosleep(), setitimer(), sleep(), Sleep(), times() 和 usleep。

至少在 Unix 系统下, 函数 wait() 不是你想要的。函数 select() 和 poll() (如果存在) 可以用来实现简单的延时。在 MS-DOS 下, 可以重新对系统计时器和计时器中断编程。这些函数中, 只有 clock() 在 ANSI 标准中。

两次调用 clock() 之间的差分就是执行所用的时间, 如果 CLOCKS PER SEC 的值大于 1, 你可以得到精确度小于秒的计时。但是, clock() 返回的是执行程序使用的处理器的时间, 在多任务系统下,有可能和真实的时间相差很多。

如果你需要实现一个延时, 而你只有报告时间的函数可用, 你可以实现一个繁忙等待。但是这只是在单用户, 单任务系统下可选, 因为这个方法对于其它进程极不友好。

在多任务系统下, 确保你调用函数, 让你的进程在这段时间进入休眠状态。可用函数 sleep(), select() 或 poll() 和 alarm() 或 setitimer()实现。

对于非常短暂的延时, 使用一个空循环颇据有诱惑力:

long int i;

for (i = 0; i < 1000000; ++i)

;

但是请尽量抵制这个诱惑!因为, 经过你仔细计算的延时循环可能在下个月因为更快的处理器出现而不能正常工作。更糟糕的是, 一个聪明的编译器可能注意到这个循环什么也没做, 而把它完全优化掉。

本文分享自微信公众号 - C语言入门到精通(gh_780327809188)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-10-31

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 10.3 顺序读写数据文件

    1、对文件进行格式化输入输出时,要用fprintf函数和fscanf函数,作用与printf函数和scanf函数相仿,都是格式化读写函数。

    闫小林
  • 7.6 内部函数和外部函数

    2、对变量而言,声明与定义的关系稍微复杂一些。在声明部分出现的变量有两种情况:一种是需要建立存储空间的,另一种是不需要建立存储空间的。前者称为定义性声明,简称定...

    闫小林
  • 12.1 有关文件的基本概念

    1、文件(file)是由大量性质相同的记录组成的集合。可按其记录的类型不同而分成两类:操作系统的文件和数据库文件。

    闫小林
  • dz2.5 后台空白 登陆等到处提示内部错误,无法显示此内容

    源出于对一个垃圾站的搬家,直接搬了文件和数据库,结果出现标题的错误,经过几天的百度等。

    用户1191760
  • php面试笔记(7)-php基础知识-文件及目录处理考点

    在面试中,考官往往喜欢基础扎实的面试者,而文件及目录处理相关的考点,往往是大家容易忽视的一个点,今天冷月就来帮各位小伙伴们梳理一下,在面试中文件及目录处理相关的...

    学长冷月
  • Elasticsearch存储深入详解

    在本文中,我们将研究Elasticsearch的各个部分写入数据目录的文件。我们将查看节点,索引和分片级文件,并简要说明其内容,以便了解Elasticsearc...

    铭毅天下
  • 一口价!组合域名51work.cn8万元被秒

    近段时间域名圈传来的交易消息未曾停过,这不一枚“51”开头的组合域名51work.cn以一口价80000元被秒,这个价格真是诱惑人啊!

    躲在树上的域小名
  • 数据库锁的分类(粒度,级别)

    数据库是一个多用户使用的共享资源。当多个用户并发地存取数据时,在数据库中就会产生多个事务同时存取同一数据的情况。若对并发操作不加控制就可能会读取和存储不正确的数...

    葆宁
  • Wolfram 光学解决方案

    优化由符号定义的透镜和反射镜的系统,用内置图像处理或数据分析函数检测光学元件,计算复杂的射线跟踪模型。

    WolframChina
  • unittest的参数化

    之前写了很多关于unittest单元测试框架的文章,本小节主要介绍它在参数化方面的应用,首先需要安装第三方的库parameterized,安装的命令...

    Criss@陈磊

扫码关注云+社区

领取腾讯云代金券