linux 用 select 替代 sleep(微秒级)

开发者福利!热门AI工具限时免费用 购周边即赠Coding Plan Lite,Claude Code、Cursor等20+工具畅享,效率翻倍! 阅读详情
#include <sys/select.h>
#include <sys/time.h>
#include <sys/types.h>
#include <unistd.h>
#include <stdio.h>


void local_sleep (long sec, long usec) {

  struct timeval timeout = {sec, usec};
  int ret = 0;

  if ((0 == timeout.tv_sec) || (timeout.tv_usec < 20))
  {
    printf("local sleep error! input sleep time must greater than 20ms !\n");
    timeout.tv_usec = 20;
  }

  ret = select(0, NULL, NULL, NULL, &timeout);

  if ((-1 == ret) || (ret))
  {
    printf("local sleep error!\n");
  }

}

 

从C的select到C++11的sleep_for:一文讲透Linux延时函数的演进与最佳实践 本文深入探讨了Linux环境下从传统C语言的selectsleep函数到现代C++11的sleep_for等延时函数的演进历程与最佳实践。详细分析了各时期延时方案的特点、局限及适用场景,包括秒级精度的sleep()微秒级的usleep()、高精度的nanosleep()以及C++11引入的类型安全chrono库,帮助开发者根据需求选择最优延时策略,提升程序可靠性和性能表现。 阅读详情

相关推荐

别再乱用sleep了!Linux C/C++ 高精度延时函数实战避坑指南(附代码)

本文深入探讨Linux C/C++中高精度延时函数的正确使用方法,揭示sleep、usleep等传统函数的缺陷,并推荐nanosleepselect及C++11的现代解决方案。通过实战代码演示,帮助开发者在嵌入式、音视频等时序敏感场景中实现微秒级精确控制,避免常见陷阱。

weixin_33716941的博客 394

Linux C/C++ 延时函数实战指南:从sleep到std::sleep_for的精准选择

本文详细介绍了Linux C/C++开发中常用的延时函数,包括sleep、usleep、nanosleepselect和C++11的std::sleep_for,分析了它们的优缺点及适用场景。通过实战示例和性能测试,帮助开发者根据需求选择最合适的延时方案,提升程序的精确性和稳定性。

weixin_30596165的博客 437

别再乱用sleep了!Linux C/C++高精度延时实战指南(从usleepselect避坑)

本文深入探讨Linux C/C++高精度延时实现方案,从传统sleep、usleep到现代nanosleepselect方法,提供实战避坑指南。针对嵌入式系统和实时应用开发,详细分析各方案的精度、线程安全及性能优化技巧,帮助开发者选择最适合的延时策略。

weixin_30381317的博客 241

【备忘】mysql select sleep(1)

指令: select sleep(N) 说明: 让sql语句运行N秒钟 测试结果: 经过实际测试得出,单独执行select sleep(1),那么执行耗时会被控制在1-2秒之内。如果结合实际数据测试则不是这个意思,变成了每一条数据查询耗时1秒多,例如我数据有10条,那么查询出来就是10秒,而不是这里参数N的耗时秒数。 图1: 图2: END ...

qq_15941409的博客 2435

使用select实现sleep函数的功能

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

weixin_39035140的博客 2991

select函数实现睡眠和模拟待超时的输入等待

select函数实现睡眠和模拟待超时的输入等待

434

Linux高精确的时序(sleep, usleep,nanosleep

方式一、 (sleep, usleep,nanosleep)本质上都是系统调用,但是精确程度不一样,依次递增。 方式二、nice函数 功能描述 改变进程优先级,也就是改变进程执行的优先顺序。 函数定义 int nice(int inc); 返回值 成功执行时,返回新的nice值。失败返回-1 参数介绍 inc数值越大则优先级越低(进程执行慢),超级用户可以使用负的inc

程序狗的成长之路 8511

select 休眠sleep 更准

‍int mySleep(int second, int microsecond){timeval t_timeval;t_timeval.tv_sec = second;t_timeval.tv_usec = microsecond;select(0, NULL, NULL, NULL, &t_timeval);return 0;}//kfs中的有段代码是这样写的fd_set rfds;struct timeval timeout;  timeout.tv_sec = 5;  timeout.tv_use

3723

Linux中的sleep、usleep、nanosleep、poll和select

在进行Linux C/C++编程时,可调用的sleep函数有好多个,那么究竟应当调用哪一个了?下表列出了这几个函数间的异同点,可作为参考:   性质 精准度 线程安全 信号安全   sleep libc库函数 秒 ...

一见 8624

Linux】详解Linux系统中常用的延时函数:sleep、usleep、nanosleepselect和std::this_thread::sleep_for的区别和适用场

Linux 系统编程中,延时函数用于控制流程、节省资源或模拟定时任务。常用的延时函数包括:sleep(秒级延时,适用于简单延时,不要求高精度)、usleep微秒级延时,适用于需要微秒级控制的操作,但在 POSIX.1-2008 中已废弃)、nanosleep(纳秒级延时,高精度需求,如实时系统,且具有良好可移植性)、select微秒级延时,主要用于 I/O 多路复用时顺便实现延时)以及 std::this_thread::sleep_for(C++11,任意时间单位延时,适用于现代 C++ 编程.

科技改变人类,技术成就未来 4572

MFC中的Sleep函数与linux下的sleep函数不同

a> MFC中的Sleep函数原型为: void Sleep( DWORD dwMilliseconds );b>linux下的sleep函数原型为: unsigned int sleep(unsigned int seconds);MFC中的是微秒linux下的是秒。linux下用微秒的线程休眠函数是: void usleep(unsigned long usec)

www.pingfi.com 2780

linux下使用select函数达到延时效果

我为什么要使用select函数延时呢,是因为我在主线程外又开了两个线程来接收CAN通信的数据,线程里面用的while死循环,但是发现can接收的数据很不正常,经常是一段时间收不到,一段时间收到很多,而且很小的程序cpu占用率很高,有大佬说可能是主线程的死循环一直在运行,导致其他进程没有机会插入,所以需要在死循环里加入一段小延时。 使用sleep()和usleep()的确可以达到效果,但是使用这类延...

qq_38418182的博客 1791

time.sleep() 深度解析:精度、线程、asyncio 与生产级替代方案

time.sleep() 表面是 Python 基础暂停函数,实则是 Python 解释器、C 标准库与操作系统内核协同调度的关键接口。其行为由底层时钟源(如 nanosleep/Sleep)、线程模型(是否释放 GIL)及运行环境(同步/异步、GUI/服务)共同决定。理解 sleep 的不可中断性、平台精度差异(Windows 15ms vs Linux 1ms)、在 asyncio 中阻塞事件循环等原理,对构建高可靠系统至关重要。它广泛应用于请求节流、定时任务、GUI 防冻结和实时数据采集等场景。本文聚

weixin_30522183的博客 406

linux下用select实现精确到睡眠时间小于1秒的sleep函数

/*精确度为0.001秒的sleep函数*/ #include #include #include #include #include #include   void sleep_1(unsigned int secs) {   struct timeval tval;   tval.tv_sec=secs/1000;

janisonllz的博客 1402

Linux下的微秒级定时器: usleep, nanosleep, select, pselect

Linux下的微秒级定时器: usleep, nanosleep, select, pselect 标签:linuxnulldelaystructdate 2012-02-07 23:294979人阅读评论(0)收藏举报 分类: Linux 系统编程(26) 版权声明:本文为博主原创文章,未经博主允许不得转载。 今天在公司代码中...

weixin_30474613的博客 120

跨平台C编程避坑指南:当你的sleep函数在Windows和Linux上表现不一样时

本文深入解析了C编程中`sleep`函数在Windows和Linux平台上的差异,提供了基于条件编译的跨平台解决方案。通过对比Unix的`unistd.h`和Windows的`windows.h`实现,帮助开发者避免常见的平台兼容性问题,提升代码的可移植性和可靠性。

weixin_30764771的博客 526

别再乱用sleep了!Linux C++高精度延时实战指南(从usleep到std::sleep_for的避坑总结)

本文深入探讨了Linux C++中高精度延时函数的正确使用方法,对比了sleep、usleep、nanosleep和std::sleep_for等函数的优缺点,并提供了实战指南和性能数据。特别指出usleep已被POSIX废弃,推荐使用select或clock_nanosleep实现微秒级精度延时,同时介绍了现代C++的std::sleep_for方案及其底层实现细节。

weixin_30299709的博客 302
上一篇: source insight 4 使用问题
下一篇: 关于 sleep usleep nosleep select 精度
poject
博客等级 码龄18年 50粉丝 87原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值