首页 > 其他分享 >线程死循环中的sleep,误差10ms以上

线程死循环中的sleep,误差10ms以上

时间:2023-10-26 18:18:00浏览次数:79  
标签:c++ api 线程 sleep 10ms 死循环

线程函数里是死循环,其中需要sleep 1ms,即1ms周期执行死循环。但是经示波器测试发现至少10ms以上。

【已测试的方法】

Sleep(1);   //Windows api

WaitForSingleObject(hThread, 1); //Windows api

std::this_thread::sleep_for(std::chrono::milliseconds(1));  //c++ api

【原因分析】

sleep 1,暂停它至少1毫秒。即告诉操作系统将线程放入睡眠队列中,一旦过了1毫秒,就应该认为该线程有资格再次执行。但这仍然取决于操作系统是否能调度您的线程,这可能需要另外10ms (或更多,或更少,取决于各种因素)。

【结论】

目前没有发现精准办法,sleep是为了降低cpu消耗。

【参考】

Sleep(1)不准,实际延时16ms_sleep时间不准_无瑕剑客的博客-CSDN博客

c++11 this_thread::sleep_for至少十几毫秒的解决办法_c++ sleep_for 最小时间-CSDN博客

标签:c++,api,线程,sleep,10ms,死循环
From: https://www.cnblogs.com/xixixing/p/17789993.html

相关文章

  • Python threading实现多线程 提高篇 线程同步,以及各种锁
    本文主要讲多线程的线程之间的资源共享怎么保持同步。多线程基础篇见,Pythonthreading实现多线程基础篇Python的多线程,只有用于I/O密集型程序时效率才会有明显的提高,如文件/输入输出/socket网络通信/http通讯等待。对于计算密集型程序一般采用多进程,这里不多讲。一、多线程的......
  • Python threading实现多线程 基础篇
    讲多线程前,先要了解什么是进程,什么是线程,已经知道的请略过。一、进程与线程:进程是资源分配的最小单位,一个程序至少有一个进程。线程是程序执行的最小单位,一个进程至少有一个线程。进程都有自己独立的地址空间,内存,数据栈等,所以进程占用资源多。由于进程的资源独立,所以通讯不方......
  • python 多线程的使用,爬取新发地菜价
    今天使用多线程来获取200页数据公众号回复 菜价 获取源码目标网站:#新发地菜价http://www.xinfadi.com.cn/priceDetail.html打开网站,发现是异步加载,然后点击xhr可以看到,数据就在这里然后我们点击负载,观察发现20代表每页展示多少条数据,不用管current则是代表页数点击标头,可以看......
  • Java 创建线程的方法
    目录继承Thread类实现Runnable接口实现Callable接口,并结合Future实现通过线程池创建线程方式一:Runnable方式二:CompletableFutureJava中创建线程有四种方式,分别是:继承Thread类首先定义一个类来继承Thread类,重写run方法。然后创建这个子类对象,并调用start......
  • 进程和线程
    2023.10.251.一个线程只能属于一个进程,而一个进程可以有多个线程,但至少有一个线程(通常说的主线程)。2.资源分配给进程,同一进程的所有线程共享该进程的所有资源。3.线程在执行过程中,需要协作同步。不同进程的线程间要利用消息通信的办法实现同步。4.处理机分给线程,即真正在处理机上......
  • 多线程服务器
    目录单线程多线程在真实的服务器客户端模型中,服务器和客户端的关系应为1:n单线程//server.c#include<stdio.h>#include<stdlib.h>#include<unistd.h>#include<string.h>#include<arpa/inet.h>intmain(){//1.创建监听的套接字intlfd=socket(AF_IN......
  • Spring异步线程池-TaskDecorator传递线程上下文
    TaskDecorator:TaskDecorator是一个执行回调方法的装饰器,主要应用于线程间传递数据,或者提供任务的监控/统计信息。从主线程拷贝数据到子线程,具体数据实际上是封装到threadlocal里面。实现方式:定义一个TaskDecorator,在线程池中设置使用这个TaskDecorator。注意......
  • 多线程指南:探究多线程在Node.js中的广泛应用
    前言最初,JavaScript是用于设计执行简单的web任务的,比如表单验证。直到2009年,Node.js的创建者RyanDahl让开发人员认识到了通过JavaScript进行后端开发已成为可能,在后端开发中,用到最多的就是多线程以及线程之间的同步功能,今天小编就为大家介绍一下如何使用Node.js实现多线程的应......
  • 进程,线程,线程生命周期,原生线程,线程调度,Thread,ThreadPool,Task,Parallel,线程安全容器
    1.进程;程序在服务器上运行时,占用的计算机资源合集,就是进程2.线程:是程序能够独立运行的最小单位,共享进程的资源;3.线程的生命周期:3.1新建,启动,可运行,正在运行,new,start,runnable,running,dead,blocked阻塞4.原生线程:由操作系统负责创建、运行、切换、终止的线程就是原生线程5.线程......
  • Qt - 多线程之QtConcurrent::run()
    QT多线程之QtConcurrent::run()QT有几种可以实现多线程编程的方式,其中最方便使用,最便携的一定是QtConcurrent::run()了,这是一个模板函数,有很多的重载原型。//在新的线程中调用普通函数template<typenameT>QFuture<T>QtConcurrent::run(Functionfunction,...)//使用线......