【97】shell实现精确延时

news2024/11/13 10:06:38
#!/bin/bash

#使用date精确延时的函数,参数是毫秒
function precise_sleep_ms() {
    local duration_ms=$1

    # 将毫秒转换为秒
    local duration_sec=$(echo "scale=9; $duration_ms / 1000" | bc)
	duration_sec=$(printf "%.3f" "$duration_sec")
    # 计算结束时间点
    local end_time=$(echo "$(date +%s.%N) + $duration_sec" | bc)

    while [[ $(date +%s.%N) < $end_time ]]; do
        sleep 0.000001  # 使用更短暂的sleep减少CPU占用
    done
}
#使用date来获取到毫秒级别
function get_millisecond() {
	date +%Y-%m-%d' '%H:%M:%S.%N | cut -b 1-23
}

#延时length毫秒
function mt_sleep_ms() {
	local length=$1
	#延时$length毫秒
	if ! date +%N | grep -q '[0-9]\{9\}'; then
		#有些系统上的date命令可能不支持%N(纳秒),则使用不精确的sleep函数
		echo "Error: Your system's 'date' command does not support nanoseconds, use sleep cmd."
		sleep $length/1000
    else
		precise_sleep_ms $length
	fi
}
echo "test 5ms"
get_millisecond
mt_sleep_ms 5
get_millisecond
echo -e "\n"

echo "test 10ms"
get_millisecond
mt_sleep_ms 10
get_millisecond
echo -e "\n"

echo "test 100ms"
get_millisecond
mt_sleep_ms 100
get_millisecond
echo -e "\n"

echo "test 1000ms"
get_millisecond
mt_sleep_ms 1000
get_millisecond
echo -e "\n"

echo "test 5000ms"
get_millisecond
mt_sleep_ms 5000
get_millisecond
echo -e "\n"

echo "test 10000ms"
get_millisecond
mt_sleep_ms 10000
get_millisecond

运行结果如下,可以看出,5ms和10ms都不是特别准确,100ms完后准确点

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2128288.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

JDBC API详解二

PreparedStatement 作用&#xff1a; 预编译SQL的执行&#xff0c;&#xff0c;预防SQL注入问题 SQL注入 通过操作输入来修改预先定义好的SQL语句&#xff0c;用以达到执行代码对服务器进行攻击的方法&#xff1b; SQL注入延时 需求&#xff0c;完成用户登录 select * fr…

04 奇偶分家

题目&#xff1a; 代码&#xff1a; #include<iostream> using namespace std; #include<stdlib.h> #include<stdio.h>int main() {int N;cin>>N;int jicount0,oucount0;for(int i0;i<N;i){int temp;cin>>temp;if(temp%20){oucount;}else if…

【python基础】简要wxPython

文章目录 wxPython程序主事件循环通俗解释在窗口中添加控件 wxPython程序 import wxapp wx.App() frm wx.Frame(None, title第一个wxPython程序, size(400, 300), pos(100, 100)) frm.Show() app.MainLoop()app.MainLoop() 让应用程序进入主事件循环中。事件循环是一种事件或…

计网简简单单复习一下

文章目录 基础体系结构(分层模型)为什么要分层?OSI 七层模型?每一层的作用?TCP/IP 四层模型是什么?每一层的作用是什么?五层体系结构以及对应的协议每一层常见协议有哪些?从输入 URL 到页面展示到底发生了什么?URI和URL的区别;forward和redirect的区别DNS作用是什么?D…

Find My外卖箱|苹果Find My技术与外卖箱结合,智能防丢,全球定位

外卖箱是外卖送餐时使用的具有保温广告功能的箱包&#xff0c;一般具有轻便易携&#xff0c;保温性好&#xff0c;耐用&#xff0c;安全&#xff0c;易固定在外送电动车上等特点。随着生活水平的提高和餐饮行业的飞跃&#xff0c;外卖作为餐饮行业一个新的利润增长点&#xff0…

论文翻译:ICLR-2024 PROVING TEST SET CONTAMINATION IN BLACK BOX LANGUAGE MODELS

PROVING TEST SET CONTAMINATION IN BLACK BOX LANGUAGE MODELS https://openreview.net/forum?idKS8mIvetg2 验证测试集污染在黑盒语言模型中 文章目录 验证测试集污染在黑盒语言模型中摘要1 引言 摘要 大型语言模型是在大量互联网数据上训练的&#xff0c;这引发了人们的…

湖南岳阳农商行高管更迭背后:不良率居高,盈利压力不减

撰稿|芋圆 来源|贝多财经 2024年8月末&#xff0c;湖南岳阳农商行发布了2024年半年报&#xff0c;报告显示截至2024年6月末&#xff0c;湖南岳阳农商行资产规模累计231亿元&#xff0c;较2023年末增长1.34%&#xff1b;营业收入3.1亿元&#xff0c;同比增幅6.54%&#xff1b;…

上海亚商投顾:沪指续创阶段新低 两市成交不足5000亿元

上海亚商投顾前言&#xff1a;无惧大盘涨跌&#xff0c;解密龙虎榜资金&#xff0c;跟踪一线游资和机构资金动向&#xff0c;识别短期热点和强势个股。 一.市场情绪 大小指数昨日分化明显&#xff0c;沪指午后一度跌超1%&#xff0c;继续刷新阶段新低&#xff0c;创业板指则涨…

53 - I. 在排序数组中查找数字 I

comments: true edit_url: https://github.com/doocs/leetcode/edit/main/lcof/%E9%9D%A2%E8%AF%95%E9%A2%9853%20-%20I.%20%E5%9C%A8%E6%8E%92%E5%BA%8F%E6%95%B0%E7%BB%84%E4%B8%AD%E6%9F%A5%E6%89%BE%E6%95%B0%E5%AD%97%20I/README.md 面试题 53 - I. 在排序数组中查找数字 …

28BYJ-48步进电机详解(五线四相 STM32)

目录 一、介绍 二、模块原理 1.工作原理介绍 2.ULN2003驱动模块原理图 3.引脚描述 三、程序设计 main.c文件 stepmotor.h文件 stepmotor.c文件 四、实验效果 五、资料获取 项目分享 一、介绍 步进电机&#xff08;STEP MOTOR&#xff09;把电脉冲信号变换成角位移…

socket编程详解

目录 1.认识socket编程 网络通信的本质 什么是socket编程&#xff1f; 如何进行socket编程&#xff1f; 2.基于UDP的socket编程 服务器端程序编写步骤 1.创建socket 2.将本地信息和网络信息进行绑定 3.接收数据 4.发送数据 客户端程序编写步骤 1.创建socket 2.发送…

再次进阶 舞台王者 第八季完美童模全球赛品牌大使【韩嘉滢】赛场秀场超燃合集!

7月20-23日&#xff0c;2024第八季完美童模全球总决赛在青岛圆满落幕。在盛大的颁奖典礼上&#xff0c;一位才能出众的少女——韩嘉滢&#xff0c;迎来了她舞台生涯的璀璨时刻。 品牌大使——韩嘉滢&#xff0c;以璀璨童星之姿&#xff0c;优雅地踏上完美童模盛宴的绚丽舞台&am…

第二百二十七节 JPA教程 - JPA日期列定义示例

JPA教程 - JPA日期列定义示例 时间类型是可以在持久状态映射中使用的基于时间的类型集合。 支持的时间类型的列表包括三个java.sql类型&#xff0c;java.sql.Date java.sql.Time和java.sql.Timestamp&#xff0c;以及两个java.util类型&#xff0c;java.util.Date和java.util.…

一家公司给1000个AI代理接入了《我的世界》——他们居然建造了一个社会

当世界上最伟大的沙盒游戏与几乎无限的AI力量结合时会发生什么&#xff1f;你会得到Project Sid&#xff0c;这是前麻省理工学院教授和神经科学家罗伯特杨博士构想出的一个精彩实验。 这位优秀的教授和他在专注于构建最先进自主代理的初创公司Altera.ai的团队决定看看他们是否…

Windows操作系统sid系统唯一标识符查看和修改

1、sid介绍 sid 作为windows系统唯一的标识&#xff0c;对某些集群业务有依赖关系&#xff0c;如果重复可能导致集群部署异常。 如&#xff1a;域控AD 就依赖 sid 功能。 但是某个云主机或虚拟机使用同一个ghost进行操作系统部署&#xff0c;就可能会导致重复的情况&#xf…

【二叉树的性质与存储结构】

1.特殊的二叉树 1.1满二叉树 特点&#xff1a; 每一层上的结点数都是最大结点数(即每层都满)叶子结点全部在最底层满二叉树在同样深度的二叉树中结点个数最多满二叉树在同样深度的二又树中叶子结点个数最多 编号原则&#xff1a; 每一结点位置都有元素从根结点开始&#xf…

探索SVG的奥秘:Python中的svgwrite库

文章目录 探索SVG的奥秘&#xff1a;Python中的svgwrite库背景&#xff1a;为何选择svgwrite&#xff1f;什么是svgwrite&#xff1f;如何安装svgwrite&#xff1f;五个简单的库函数使用方法场景应用&#xff1a;svgwrite在实际中的使用常见问题与解决方案总结 探索SVG的奥秘&a…

表面缺陷检测系统源码分享

表面缺陷检测检测系统源码分享 [一条龙教学YOLOV8标注好的数据集一键训练_70全套改进创新点发刊_Web前端展示] 1.研究背景与意义 项目参考AAAI Association for the Advancement of Artificial Intelligence 项目来源AACV Association for the Advancement of Computer Vis…

Ubuntu 20.04 部署 NET8 Web - Systemd 的方式 达到外网访问的目的

1.Ubuntu服务器环境安装 1.1 增加微软包安装源 wget https://packages.microsoft.com/config/ubuntu/22.04/packages-microsoft-prod.deb -O packages-microsoft-prod.deb sudo dpkg -i packages-microsoft-prod.deb1.2 Install the .NET SDK # 更新本地软件包列表。原理&am…

多输入多输出 | Matlab实现SSA-BP麻雀搜索算法优化BP神经网络多输入多输出预测

多输入多输出 | Matlab实现SSA-BP麻雀搜索算法优化BP神经网络多输入多输出预测 目录 多输入多输出 | Matlab实现SSA-BP麻雀搜索算法优化BP神经网络多输入多输出预测预测效果基本介绍程序设计往期精彩参考资料 预测效果 基本介绍 Matlab实现SSA-BP麻雀搜索算法优化BP神经网络多输…