精华内容
下载资源
问答
  • VB实现不占用CPU的延时

    千次阅读 2013-12-25 01:31:02
    mobjWaitTimer.Wait (5000) ' 延时5秒 自行更改 End If Loop Until Not mbStop Set mobjWaitTimer = Nothing End Sub Private Sub Command1_Click() RunProcess Print "有没有延时...
    窗体:


    Private mobjWaitTimer As clsWaitableTimer
    Dim mbWorkToDo As Boolean
    Dim mbStop As Boolean
    Private Sub RunProcess()


    Set mobjWaitTimer = New clsWaitableTimer


    Do


    If mbWorkToDo Then
    'Call ProcessWork
    Else
    mobjWaitTimer.Wait (5000) ' 延时5秒 自行更改
    End If


    Loop Until Not mbStop


    Set mobjWaitTimer = Nothing
    End Sub


    Private Sub Command1_Click()
    RunProcess
    Print "有没有延时成功呢?"
    RunProcess
    Print "应该有吧"
    End Sub
     


    类模块:

    Option Explicit


    Private Type FILETIME
    dwLowDateTime As Long
    dwHighDateTime As Long
    End Type
    Private Const WAIT_ABANDONED& = &H80&
    Private Const WAIT_ABANDONED_0& = &H80&
    Private Const WAIT_FAILED& = -1&
    Private Const WAIT_IO_COMPLETION& = &HC0&
    Private Const WAIT_OBJECT_0& = 0
    Private Const WAIT_OBJECT_1& = 1
    Private Const WAIT_TIMEOUT& = &H102&
    Private Const INFINITE = &HFFFF
    Private Const ERROR_ALREADY_EXISTS = 183&
    Private Const QS_HOTKEY& = &H80
    Private Const QS_KEY& = &H1
    Private Const QS_MOUSEBUTTON& = &H4
    Private Const QS_MOUSEMOVE& = &H2
    Private Const QS_PAINT& = &H20
    Private Const QS_POSTMESSAGE& = &H8
    Private Const QS_SENDMESSAGE& = &H40
    Private Const QS_TIMER& = &H10
    Private Const QS_MOUSE& = (QS_MOUSEMOVE Or QS_MOUSEBUTTON)
    Private Const QS_INPUT& = (QS_MOUSE Or QS_KEY)
    Private Const QS_ALLEVENTS& = (QS_INPUT Or QS_POSTMESSAGE Or QS_TIMER Or QS_PAINT Or QS_HOTKEY)
    Private Const QS_ALLINPUT& = (QS_SENDMESSAGE Or QS_PAINT Or QS_TIMER Or QS_POSTMESSAGE Or QS_MOUSEBUTTON Or QS_MOUSEMOVE Or QS_HOTKEY Or QS_KEY)
    Private Const UNITS = 4294967296#
    Private Const MAX_LONG = -2147483648#
    Private Declare Function CreateWaitableTimer _
    Lib "kernel32" _
    Alias "CreateWaitableTimerA" (ByVal lpSemaphoreAttributes As Long, _
    ByVal bManualReset As Long, _
    ByVal lpName As String) As Long


    Private Declare Function OpenWaitableTimer _
    Lib "kernel32" _
    Alias "OpenWaitableTimerA" (ByVal dwDesiredAccess As Long, _
    ByVal bInheritHandle As Long, _
    ByVal lpName As String) As Long


    Private Declare Function SetWaitableTimer _
    Lib "kernel32" (ByVal hTimer As Long, _
    lpDueTime As FILETIME, _
    ByVal lPeriod As Long, _
    ByVal pfnCompletionRoutine As Long, _
    ByVal lpArgToCompletionRoutine As Long, _
    ByVal fResume As Long) As Long


    Private Declare Function CancelWaitableTimer Lib "kernel32" (ByVal hTimer As Long)


    Private Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long


    Private Declare Function WaitForSingleObject _
    Lib "kernel32" (ByVal hHandle As Long, _
    ByVal dwMilliseconds As Long) As Long


    Private Declare Function MsgWaitForMultipleObjects _
    Lib "user32" (ByVal nCount As Long, _
    pHandles As Long, _
    ByVal fWaitAll As Long, _
    ByVal dwMilliseconds As Long, _
    ByVal dwWakeMask As Long) As Long


    Private mlTimer As Long


    Private Sub Class_Terminate()
    On Error Resume Next
    If mlTimer <> 0 Then CloseHandle mlTimer
    End Sub


    Public Sub Wait(MilliSeconds As Long)
    On Error GoTo ErrHandler
    Dim ft As FILETIME
    Dim lBusy As Long
    Dim lRet As Long
    Dim dblDelay As Double
    Dim dblDelayLow As Double
    mlTimer = CreateWaitableTimer(0, True, App.EXEName & "Timer" & Format$(Now(), "NNSS"))
    If Err.LastDllError <> ERROR_ALREADY_EXISTS Then
    ft.dwLowDateTime = -1
    ft.dwHighDateTime = -1
    lRet = SetWaitableTimer(mlTimer, ft, 0, 0, 0, 0)
    End If
    dblDelay = CDbl(MilliSeconds) * 10000#
    ft.dwHighDateTime = -CLng(dblDelay / UNITS) - 1
    dblDelayLow = -UNITS * (dblDelay / UNITS - Fix(CStr(dblDelay / UNITS)))
    If dblDelayLow < MAX_LONG Then dblDelayLow = UNITS + dblDelayLow
    ft.dwLowDateTime = CLng(dblDelayLow)
    lRet = SetWaitableTimer(mlTimer, ft, 0, 0, 0, False)
    Do
    lBusy = MsgWaitForMultipleObjects(1, mlTimer, False, INFINITE, QS_ALLINPUT&)
    DoEvents
    Loop Until lBusy = WAIT_OBJECT_0
    CloseHandle mlTimer
    mlTimer = 0
    Exit Sub
    ErrHandler:
    Err.Raise Err.Number, Err.Source, "[clsWaitableTimer.Wait]" & Err.Description
    End Sub


    展开全文
  • Qt延时占用CPU的问题解决

    千次阅读 2015-10-22 14:37:52
    1、使用时间轮询查看,卡界面,但是 cpu 被占杠杠,起码50%以上。 void MySleep(unsigned int msec) { QTime dieTime = QTime::currentTime().addMSecs(msec); while(QTime::currentTime() dieTime ){

    现在qt延时,通常使用的三种方法

    1、使用时间轮询查看,不卡界面,但是 cpu 被占的杠杠的,起码50%以上。

    void MySleep(unsigned int msec)
    {
        QTime dieTime = QTime::currentTime().addMSecs(msec);
        while(QTime::currentTime() < dieTime ){
            QCoreApplication::processEvents(QEventLoop::AllEvents,100);
        }
    }

    2、精度低,卡界面,CPU占用少

    QThread::msleep(100); 

    3、这个和 1其实没有什么区别,当然还有很多类似的方法来做延时,但是通常这样做精度高了,然而CPU实在受不了

    QTimer t; 
    t.start();
    while(t.elapsed() < 250){ 
        QCoreApplication::processEvents(); 
    } 

    总的来说,延时的使用还是看情况吧,如过你在 while里面需要延时,而且精度要求不是很高(个人觉得10ms界限吧),还是使用方法2吧,不然CPU被占的死死的!

    最好是两种方式结合

    void MySleep(unsigned int msec)
    {
        QTime dieTime = QTime::currentTime().addMSecs(msec);
        while(QTime::currentTime() < dieTime ){
            QCoreApplication::processEvents(QEventLoop::AllEvents,100);
    	QThread::msleep(100); 
        }
    }
    这样就达到来中和的效果了



    展开全文
  • docker查看容器的cpu占用

    万次阅读 2019-05-24 20:05:05
    压测导致的该服务数据过多,每个接口进行调用数据时都会产生很大的延时,导致cpu占用规则跳动,删除压测的数据,释放了部分数据库数据,但是指标治本,想着接下来看看mycat,redis好像压测也会因为内存使用...

    docker stats

     

    压测导致的该服务数据过多,每个接口进行调用数据时都会产生很大的延时,导致cpu占用率不规则跳动,删除压测的数据,释放了部分数据库数据,但是指标不治本,想着接下来看看mycat,redis好像压测也会因为内存使用完毕爆掉,想着接下来使用kafka,报错日志呢也没有完善的监控体系,看看能不能引用ELK

    展开全文
  • RTX CPU占用率实现

    2020-04-21 18:01:08
    实现方式为开启一个任务,任务开始执行100ms的延时,记录这段延时 空闲任务中的计数器次数。 这个次数就是CPU利用率几乎为0的时候,一直执行空闲任务,这个就是最大计数器值。 然后在本任务中启动 其他任务,这是...

    实现方式为开启一个任务,任务开始执行100ms的延时,记录这段延时 空闲任务中的计数器次数。

    这个次数就是CPU利用率几乎为0的时候,一直执行空闲任务,这个就是最大计数器值。

    然后在本任务中启动 其他任务,这是因为在这之前不能有其他任务执行。

     

    在最高优先级的任务中,100ms延时读取 空闲计数器值,这个就是空闲的单位时间。

    CPU占用率 = 1-空闲单位时间/初始化最大空闲计数器值。

    目前出现一个问题,有时候计算出来是负数。

    开始怀疑是不是DMA和CPU抢总线,造成CPU访问延迟,按照这样也不会啊,这样不是开启DMA就没法搞实时性程序了。

    最后发现是空闲计数器是32位,两个任务优先级不同的任务都在访问他,这样就出现了访问不完整的情况,也就是

    通常所说的原子操作。

    keil中有相应的原子操作函数,atomic_set32()

    网上找的图

    目前M0+为ARM V6架构。

    还有可以关闭中断 开启中断。这个也可以实现简单,但是关闭中断在有些要求严格的项目上是不允许的。

     

    信号量使用笔记

    osSemaphoreId dma_cplt;
    // 定义信号量
    static osSemaphoreDef(dma_cplt);
    // 创建信号量
    dma_cplt = osSemaphoreCreate(osSemaphore(dma_cplt), 0);
    // 等待信号量
    osSemaphoreWait(dma_cplt, osWaitForever);
    // 释放信号量
    osSemaphoreRelease(dma_cplt);

     任务占用率 一个任务中 只要释放CPU任务占用率都不会很高。

    中断一般发送信号量,然后任务接收信号量,等待释放信号量然后运行。

    另外一种是osDelay(x)

    实际测试 CPU占用率 两种方法差不多。

    展开全文
  • 前端PDC双目倾斜相机客流统计项目中排查平台服务程序延时问题时,平台demo程序测试发现多核cpu某个核的占用率达到100%,导致组件中目标检测线程和客流统计线程单帧耗时达到实时,存在延时和丢帧问题...
  • stm32f1的延时

    2019-07-24 00:32:53
    所谓的软件延时就是利用cpu来处理 使cpu不能去处理别的命令这也是他的一个缺点还有他的延时很难精准 .优点是不占用硬件资源 for(int Delay_s) { int i = 0; for(i = 0; i < Delay_s; i++) { for...
  • msleep和mdelay都是内核的延时函数,原型如下: ...msleep是休眠函数,不占用CPU资源,延迟时间通常高于给定值。 具体可以参考如下文章: The difference between Mdelay and Msleep in Linux Linux中内核延时函数 ...
  • C语言里的延时函数

    万次阅读 2016-07-18 10:32:01
    C语言延时 悬赏分:0 - 解决时间:2007-2-18 14:48s级...不然就用中函数获得当前时间,然后通过比较记录时间和当前时间,决定作出动作(推荐用空循环,这样会占用CPU时间)。 关于C语言一些时间函
  • vb 延时代码

    2011-11-09 17:52:06
    不占用CPU的VB延时代码,可以用用。 直接复制到模块中进行调用就可以了。
  • 延时函数

    2021-02-09 22:43:46
    一、内核的延时函数 应用程序的睡眠函数 #include <unistd.h>...优点:优点不占用CPU资源。 缺点:时间精确度低 #include <linux/delay.h> void ssleep(unsigned int seconds) //秒级别 void
  • sleep作用期间,该线程不占用CPU资源。 delay意为延迟,即线程等待,由线程自身进行循环查询,在设定时间之后退出循环。delay作用期间,该线程占用CPU资源。 在上位机,delay常可以和sleep组合使用,即循环查询中...
  • Openwrt-Linux延时函数

    2020-11-25 17:53:17
    Openwrt-Linux延时函数 占用CPU:delay() 不占用CPU:sleep() 头文件: #include <unistd.h> openwrt平台: (可能不同平台,sleep延时的时间不一样,这个具体测试) sleep(); 延时s usleep(); 延时ms
  • linux 内核延时

    2019-06-06 17:14:24
    #忙等待:等的时间很短,等...在使用ndelay或者udelay的时候CPU是忙等待,会一直占用CPU的资源 睡延时消耗CPU资源,在睡眠等待的时候可以让当前task调度出去,让出CPU去执行其他的TASK void msleep(unsigned ...
  • 在目前大环境下,家庭公网IP并非固定IP,经常性会改变,如果我们知道最新公网IP,则无法通过IP访问家庭中所部署服务,DDNS虽然可以使用域名访问服务,但域名解析可能存在延时,IP变动后可能无法通过域名访问...
  • 对于Linux驱动开发来说,我们不可避免会使用到延时函数,其中最为常见的延时函数有msleep、usleep(sleep这些是睡眠不占用cpu的),还有mdelay、udelay(delay是CPU忙等待,定时精准但占用cpu),上述延时函数各有优...
  • UDP传输与高延时的实现方式选择

    千次阅读 2011-04-02 09:54:00
    本文仅写给实际编码的程序员. 并是写给架构师与理论家的. UDP传输每次的数据能太大只能, 这是必须的. <br />... 老是去取cpu时钟,可以达到极高效的延时,但cpu占用率100%这是可取的. 方案2.
  • 网络延时测量程序

    2018-03-28 13:41:00
    3.在不同场景下进行测试(CPU占用率极高、下载进程占据带宽、内网外网环境) 4.能够读写日志文件,并处理数据 5.图形化界面 关于项目 首先放出项目代码:Github 这个项目总体来说并难,思路也是非...
  • VB延时模块,6种做法汇总

    千次阅读 2016-04-16 20:34:29
    Option Explicit '延时模块,根据网上资料加以整理改写,共6种做法及参数可选 ...'再加上sleep 1,就基本上不占用CPU了 '但要防止重复响应造成类似于“层叠事件”或多个过程彼此“交错”运行,最好把不
  • 现在做滑动门一般都是无侵入式延时滑动可以防止鼠标滑动过快而导致CPU占用过高,从网易学来,多说了,上代码 <!DOCTYPE ...
  • 实时操作系统延时问题

    千次阅读 2016-04-28 16:01:54
    和高效的CPU利用率,同时在程序运行过程中高优先级任务必须调用系统函数,不然就会导致高优先级任务一直占用CPU使用权,从而使低优先级的任务无法获得CPU的使用权,这样做反而能发挥出操作系统实时调度的优点。...
  • __NOP();延时函数

    千次阅读 2020-04-12 11:12:30
    不用系统时钟与通用外设时钟的延时函数 介绍下__NOP();函数; 它类似于汇编里的伪指令,也称作“空指令”; 它执行操作,但占一个程序步。 空指令使用时会占用执行一个指令的CPU时间片。常用于程序延时或精确计时,...
  • 我为什么要使用select函数延时呢,是因为我在主线程外又开了两个线程来接收CAN通信数据,线程里面用while死循环,但是发现can接收数据很正常,经常是一段时间收到,一段时间收到很多,而且很小程序cpu...
  • 七种VC延时方式

    2011-01-26 21:35:00
    这种定时方法非常简单,可以实现一定的定时功能,但其定时功能如同Sleep()函数的延时功能一样,精度非常低,最小计时精度仅为30ms,CPU占用低,且定时器消息在多任务操作系统中的优先级很低,能得到及时响应,往往...
  • 本来一个按键检测是很简单功能,在大学时候做51单片机矩阵键盘更要复杂,但是如果要在操作系统中使用按键并且很好去除抖动,影响整个rtos系统运行,保证中断不会长时间占用CPU,达到快进快出目的。...
  • 前些时间,为了配置合更加快速有效地制作Sphinx分词...想来想去还是得修正一下,最好我方法是,当CPU个数只有一个时候,我就让那个子线程延时1毫秒,如果是双核或更多就不延时,今天重点是说,在C# winform...
  • 毕竟播放时还占用cpu不合适。 目前问题是当窗口处于后台时通过多媒体键/全局快捷键进行暂停操作时UI有大概率不会更新。 也就是“正在播放”字样有可能不会变成“已暂停”,同时播放暂停键图标可能不会更新...
  • 每隔1s执行一段程序方法

    千次阅读 2016-05-26 15:37:52
    #include&lt;windows.h&gt; ..... while(1) ...//延时1s ...系统CPU部分资源被占用,其他线程无法进入,增加时间...Wait(1000):不占用CPU,线程等待1000ms;等待使用CPU,不占用系统CPU资源,会增加时间限...
  •  可编程定时/计数器 特点是工作灵活,而且不占用CPU的运行时问,缺点是成本较高。其中可编程定时/计数器8253是一种使用较为普遍的可编程定时/计数器。  可编程定时/计数器8253通过软件设定,可以产生各种时间延迟...
  • 在系统中,常常需要对事件进行定时或者计数,定时的方法... 软件定时:比如循环一段延时子程序,但是这种方式不同的机器所产生的延时不一样,而且程序会占用CPU时间。 可编程的硬件定时:延长时间的长短固定,...

空空如也

空空如也

1 2 3 4 5 ... 8
收藏数 154
精华内容 61
关键字:

不占用cpu的延时