一、sleep和select到底哪个好

近期在阅读公司源码过程中发现了用select实现的sleep函数,经过思索和查阅相关资料,有了一定的了解,
1、首先两者都可以实现延时的效果,但是sleep延时的时间精确度上不高,因为设计CPU的调度算法、线程进程优先级,如果说对于时间上没有精确的要求,感觉sleep要笔记方便,就一行代码省事,无伤大雅。
2、也有人说sleep浪费CPU,使程序阻塞,如果说计算机资源本身就很紧缺,考虑系统的运行的效率、甚至网络传输速度,最好采用select。可以查看这个人的博客,相对详细一点:https://blog.csdn.net/dongyu_1989/article/details/78968261
3、总之来说用select百利而无一害吧。

二、源码

/*** 微秒级定时器 ***/
void sys_usleep(unsigned int us)
{if (!us)return;do {struct timeval tv;tv.tv_sec  = us / 1000000;tv.tv_usec = us % 1000000;(void)select(0, NULL, NULL, NULL, &tv);} while(0);
}
/*** 秒级定时器 ***/
void sys_usleep(unsigned int us)
{if (!us)return;do {struct timeval tv;tv.tv_sec  = us;tv.tv_usec = 0;(void)select(0, NULL, NULL, NULL, &tv);} while(0);
}
/*** 毫秒定时器 ***/
void sys_usleep(unsigned int us)
{if (!us)return;do {struct timeval tv;tv.tv_sec  = us / 1000;tv.tv_usec = (us % 1000) * 1000;(void)select(0, NULL, NULL, NULL, &tv);} while(0);
}

使用select实现sleep函数的功能相关推荐

  1. c语言select函数头文件,简述select函数的功能与调用方法

    使用select 首先我们需要解答一些疑惑.为什么要使用select函数? 比如你有一个服务器程序,维护着N多个TCP连接,你如何去判断这些TCP连接上有数据传送过来了呢?最傻瓜的办法就是隔一定时间去 ...

  2. MySQL的position值是什么_MySQL数据库中系统函数POSITION功能简介

    摘要: 下文讲述MySQL数据库中系统函数POSITION的功能说明,如下所示: 系统函数POSITION功能: 用于查找一个字符串在另一个字符串中第一次出现的位置 当无法在原始字符串中查找到子字符串 ...

  3. MySQL讲义第 39 讲——select 查询之函数(2):日期时间型函数

    MySQL讲义第39讲--select 查询之函数(2):日期时间型函数 文章目录 MySQL讲义第39讲--select 查询之函数(2):日期时间型函数 一.数据准备 二.MySQL 日期时间型函 ...

  4. 【代码审计-PHP】审计方法、敏感函数、功能点

    前言: 介绍: 博主:网络安全领域狂热爱好者(承诺在CSDN永久无偿分享文章). 殊荣:CSDN网络安全领域优质创作者,2022年双十一业务安全保卫战-某厂第一名,某厂特邀数字业务安全研究员,edus ...

  5. 网络超时检测-select()函数

    select()函数 1.利用select()函数进行超时检测相比较于其他两种方式的特点是: 使用select函数实现超时检测,超时时间设置一次,只会有效一次,所以需要将其放在循环里面 当select ...

  6. mysql substring用法_MySQL数据库中系统函数SUBSTRING功能简介

    摘要: 下文讲述MySQL数据库中系统函数SUBSTRING的功能说明,如下所示: 系统函数SUBSTRING的功能: SUBSTRING函数的功能: 用于从字符串的指定位置开始截取指定长度的字符串 ...

  7. 在oracle中实现DateDiff函数的功能

    在orcale中是没有DateDiff函数的功能的,想要实现时间比对功能可以这么写: 1.利用日期间的加减运算 天: ROUND(TO_NUMBER(END_DATE - START_DATE)) 小 ...

  8. datediff什么作用php,php中easter_date函数的功能起什么作用呢?

    摘要: 下文讲述php中easter_date函数的功能讲解,如下所示: easter_date函数功能说明: 返回指定年份对应的复活节午夜的Unix时间戳. easter_date语法: easte ...

  9. numpy中ravel函数、flatten函数的功能及差异

    numpy中ravel函数.flatten函数的功能及差异 >>> import numpy as np >>> a = np.arange(20).reshape ...

最新文章

  1. 关于内网linux系统如果安装nodejs,npm,express,mongodb,forever等
  2. jupyterlab debugger+显示图片
  3. ZCMU 1958: 机器翻译(技巧性的模拟)
  4. 【BZOJ4821】【SDOI2017】相关分析 [线段树]
  5. PIC32单片机harmony开发环境 - i2c例程和代码分析
  6. sdut2056不敢死队问题
  7. android 中自定义键盘,【图片】自定义属于自己的专属键盘的思路!!!(需要有android编程基础)【exagear吧】_百度贴吧...
  8. 很冷门,但非常实用的 Python 库
  9. java 设置mysql 密码_Mysql修改设置root密码的命令及方法
  10. iptables第二部分
  11. Kali安装问题解决方案
  12. 如何在 Mac 上卸载 Chrome?
  13. 莫烦python进化算法_使用遗传算法解决TSP问题(莫烦python 学习笔记)
  14. Mysql 计算经纬度距离
  15. AIDA64内存与缓存测试过了算稳定吗_买了B460主板的你,究竟需要怎样的内存
  16. java 自定义 转换器_自定义类型转换器
  17. PowerApps 中的 Filter、Search 和 LookUp 函数
  18. 个人邮箱怎么注册,商业人士用哪个邮箱最好?
  19. 美国媒体称互联网不能成为低级趣味天堂
  20. 2022,这些大屏可视化素材,够你用一整年了(附可视化素材包)

热门文章

  1. html中设置content-disposition,Content-Disposition
  2. 2016级ACM寒假训练(六)
  3. A2W W2A A2T T2A _T() 含义以及用法
  4. 专属爸妈和新生儿的10款亲子游戏推荐
  5. oracle补丁版本查看的sql,Oracle、SQLServer、ArcSDE怎么查看版本、补丁 - ArcGIS技巧研讨 - 博客频道nbsp...
  6. java家用电器springboot家电销售网站管理系统
  7. 管理复杂性:好奇心和智商一样重要
  8. c# 算式 计算器_怎么实现计算器中的混合运算+-*/(),用C#语言
  9. python 16进制转十进制
  10. 打印二维数组的三种方法