草庐IT

print_sleep

全部标签

c++ - 在不消耗太多 CPU 周期且没有 sleep ()的情况下循环?

我正在做一个VoIP程序,它不断检查录音缓冲区中是否有任何内容(FMOD库,只要函数getRecordPosition>0,缓冲区中就有数据)。所以它会是这样的:while(true){if(getRecordPosition>0){processdata....}}然而,这会导致非常高的CPU使用率。一个版本是使用sleep()但如果可能我宁愿不使用它。例如,带有事件驱动循环的win32消息处理不会消耗很多cpu周期,这是我试图模仿的东西。同时我明白必须经常调用函数getRecordPosition()以查看返回值是否大于0。我是否坚持执行while(true)循环和sleep()一

c++ - 系统之间奇怪的 'Sleep' 行为

我有一个程序使用SleepWin32API调用让线程等待特定的时间。简而言之,它通过发送预取在内存中的图像来模拟相机。我正在使用Sleep来模拟帧率--Sleep(1000/fps)这在我的开发系统(Inteli5(第一代)、Win764)上运行良好,但当我在另一个系统(Inteli7-2600-SandyBridge)上运行时,sleep时间完全不同且不准确。例如,Sleep(16)休眠大约32msSleep(3)休眠16ms过去,我认为Windows中的最短sleep时间为15ms,但我的开发系统没有这个限制。有什么想法吗?另外,有没有更好的方法来实现我的模拟器的帧率?

c++ - Sleep() 函数用法

这是一个示例pgm,用于检查Sleep()函数的功能。这只是一个演示,因为我在我的应用程序开发中使用了这个sleep()和clock()函数。//TestTicks.cpp:Definestheentrypointfortheconsoleapplication.//#include"stdafx.h"#include#include#includeint_tmain(intargc,_TCHAR*argv[]){inti,i2;i=clock();//std::cout在这段代码中,我在sleep函数前后使用clock()计算时间。由于我使用sleep(30000),时间差至少为30

c# - 在线程内 sleep 的替代方法

各种答案表明在线程内休眠是个坏主意,例如:Avoidsleep.为什么呢?经常给出的一个原因是,如果线程正在休眠,则很难优雅地退出线程(通过发出终止信号)。假设我想定期检查网络文件夹中的新文件,可能每10秒一次。这对于优先级设置为低(或最低)的线程来说似乎是完美的,因为我不希望可能耗时的文件I/O影响我的主线程。有哪些选择?代码在Delphi中给出,但同样适用于任何多线程应用程序:procedureTNetFilesThrd.Execute();begintrywhile(notTerminated)dobegin//Checkfornewfiles//...//Restalittle

c++ - 当 `sleep_until()` 指定过去的时间点时,行为是否明确?

C++11标准讨论了如果调整系统时钟应该发生什么,这样传递给sleep_until()的时间点现在已经过去了——但我看不到任何地方这解决了指定时间点已经过去的情况。我是否只是忽略了一些东西,或者它真的没有指定-即使是UB或实现定义的?如果以负持续时间调用sleep_for(),则会出现类似的问题。 最佳答案 计算sleep时间和调用sleep_until()不是原子的。有可能您计算了时间,然后发生了上下文切换、系统过载、交换,并且对sleep_until()的实际调用发生得更晚。所以如果sleep_until()没有在时间过去时醒来

没有宏的 C++ 简单反射 : Print Variable Name and Its Value

在C++中是否有一种非宏的方式来打印变量名及其值。这是宏方法:#defineSHOW(a)std::coutPS:我用的是Linux,不需要跨平台的解决方案 最佳答案 不,C++不支持反射,唯一的方法(据我所知)是使用宏。 关于没有宏的C++简单反射:PrintVariableNameandItsValue,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/6849965/

c++ - QThreads , QObject 和 sleep 函数

我遇到的问题是,根据大量文章,我决定按照它们应该的方式实现QThreads:https://www.qt.io/blog/2010/06/17/youre-doing-it-wronghttp://mayaposch.wordpress.com/2011/11/01/how-to-really-truly-use-qthreads-the-full-explanation/手头的问题是,由于算法在单独的QObject中运行(包装在QThread中)。我怎样才能调出类似Thread::Sleep或smth..任何想法?软件的简短描述。基本上我的应用程序解决了TSP(旅行商问题)。随着搜索

c++ - 减慢线程的最佳方法?使用 Sleep() 可以吗?

我写了一个C++库,它做一些非常繁重的CPU工作(所有这些都是数学和计算),如果留给它自己的设备,很容易消耗100%的所有可用CPU资源(它也是多线程的)机器上的可用逻辑内核数)。因此,我在使用该库的软件应该调用的主计算循环中有一个回调:while(true){//domathherecallback(percent_complete);}在回调中,客户端调用Sleep(x)来减慢线程。最初,客户端代码是一个固定的Sleep(100)调用,但这导致了不可靠的性能,因为有些机器比其他机器更快地完成数学运算,但所有机器上的sleep都是相同的。所以现在客户端检查系统时间,如果超过1秒(这=

c++ - OS X 上 C++ 中的 sleep 操作

我想以毫秒为单位执行上述操作。我应该更喜欢哪个库和函数调用? 最佳答案 EDIT2017:C++11sleep_for是执行此操作的正确方法。请看Xornad'sanswer,below.C++03:由于MacOSX是基于Unix的,您几乎总是可以只使用标准的linux功能!在这种情况下,您可以使用usleep(这需要以微秒为单位的时间),只需将毫秒乘以1000即可得到微秒。#includeintmain(){usleep(1000);//willsleepfor1msusleep(1);//willsleepfor0.001msu

c++ - std::this_thread::sleep_for sleep 时间比 VS2015 中的预期短

让我们有以下一段代码,它简单地测量以20毫秒调用的std::this_thread::sleep_for的持续时间:#include#include#includeusingnamespacestd;usingnamespacestd::chrono;intmain(){for(inti=0;ielapsed=end-start;cout当使用工具集v120(VS2013)编译运行时,我得到了预期的结果,即:Waited20.0026msWaited20.0025msWaited20.0025msWaited20.0026msWaited20.0025msWaited20.0025ms