草庐IT

c++ - 在 UNIX 系统上调用 sleep(0) 有什么影响?

我看到人们在我使用的高度多线程、多进程的应用程序系统的某些部分中这样做。它似乎是围绕调试行完成的:std::cerr如果我退出sleep(0);(即将其更改为“”),系统的调试输出似乎以不同的顺序出现(不可预测),所以我认为它使该行更快出现-但我认为std::cerr是无缓冲的,而std::endl无论如何都会调用std::flush(),那为什么会这样呢? 最佳答案 基本上,它会将控制权交还给调度程序,并让您立即重新安排。也就是说,这基本上是一种试图欺骗操作系统做某事的黑客行为。愚弄操作系统绝不是一个好主意。如果系统适本地欠载,那

c++ - std::promise<void> 抛出未知错误,除非调用 sleep

我有这个代码:#include#includeintmain(){std::promisep;p.set_value();p.get_future().get();return0;}用gcc编译后抛出std::system_error:$g++-ofoofoo.cpp-std=c++11-lpthread$./footerminatecalledafterthrowinganinstanceof'std::system_error'what():Unknownerror-1奇怪的是,在创建promise之前添加零秒sleep,防止了异常:intmain(){std::this_thre

c++ - std::this_thread::sleep_for() 可以有虚假唤醒吗?

请注意,这不是关于std::condition_variable::wait_for()的问题。我知道这可能会虚假唤醒。我的程序的行为表明这个问题的答案是肯定的,但是STL文档对于condition_variable的情况非常清楚。至少在cppreference.com,this_thread的正确答案似乎是否。编译器是gcc4.8.1,以防这是一个缺陷。 最佳答案 C++标准的相关部分(第[thread.thread.this]/7-9段)没有提及任何关于std::this_thread::sleep_for的虚假唤醒,不像例如对

c++ - sleep 影响哪个虚拟成员函数被std::thread调用?

我不确定这是否是c++11中的预期行为。这是我发现的一个例子。#include#includeusingnamespacestd;classA{public:virtualvoida()=0;threadt;A():t(&A::a,this){}virtual~A(){t.join();}};classB:publicA{public:virtualvoida(){cout编译运行时$g++-std=c++11-pthreadtest.cpp-otest$./testB::a$但是当sleep被移除时...intmain(){Bb;//this_thread::sleep_for(ch

python - 使用 Python 的 Windows 桌面 GUI 自动化—— sleep 与紧循环

我正在使用Python的PyAutoGUI库来自动化GUI。在我完成当前窗口中的数据输入后,我正在自动化的应用程序会打开一个新窗口。一切都由python自动化处理(我当前窗口中的数据输入和打开窗口所需的单击)。在当前窗口中执行单击时,新窗口需要一些时间才能打开(可能在2到5秒之间)。所以我在这里可以想到两个选项:使用time.sleep(5)sleep(缺点:可能会不必要地浪费3秒)紧密旋转直到窗口出现在屏幕上。PyAutoGUI提供了一个locateOnScreen函数,可用于查明窗口是否实际出现在屏幕上。(但是,这是CPU密集型的,函数本身也是CPU密集型的,几乎需要2秒才能返回)

c++ - 更换 PC 后 Sleep() 变得不太准确? (C++)

我有一个几年前用C++(MFC、VisualStudio6.0)构建的程序,并且已经在某个Windows机器上运行了相当长的一段时间(超过5年)。一个月前更换了PC(旧的死了),从那时起程序的计时行为发生了变化。我需要帮助来理解原因。该程序的主要功能是通过向外部卡发送ON和OFF信号来响应击键,在ON和OFF之间具有非常准确的延迟。示例程序流程:>waitforkeystroke...>!keystrokeoccurred>sendONmessage>wait150ms>sendOFFmessage不同的击键有不同的等待时间,在20毫秒到150毫秒之间(一个非常确定的时间,具体取决于特

c# - 如何从命令行启动待机/ sleep ?

我已经找到了很多关于如何通过命令行关闭计算机、将其置于休眠状态等的信息,但是,到目前为止,我读到的关于让它从开始菜单进入休眠状态的任何提示都没有无法正常工作。我想要一个让计算机进入轻度待机模式的命令,在这种模式下,按键会使计算机再次唤醒,而不是进入休眠状态。有人知道吗?据我所知,rundll32.exepowrprof.dll,SetSuspendState0,1,0在所有情况下都不会让计算机进入休眠/待机状态,因此不适合我使用...谢谢,阿拉霍 最佳答案 感谢@minitech,我终于让它工作了。把这个留给所有想知道答案的人,并给

windows - 德尔福 : Sleep without freeze and processmessages

我需要一种方法来暂停函数的执行几秒钟。我知道我可以使用sleep方法来做到这一点,但这种方法在执行时会“卡住”应用程序。我也知道我可以使用类似下面的代码来避免卡住://sleepsfor5secondswithoutfreezingfori:=1to5dobeginsleep(1000);application.processmessages;end;这种方法有两个问题:一个是卡住仍然每秒发生一次,第二个问题是每秒调用“application.processmessages”。我的应用程序是CPU密集型的,每个processmessages调用都会做很多不必要的工作,使用不必要的CPU

python - 在 python 中精确 sleep

我的一个函数需要等待大约25毫秒。有时当处理器被其他事情占用时会调用此函数,而有时它会独享处理器。我试过time.sleep(.25)但有时它实际上是25毫秒,而其他时候则需要更长的时间。无论处理器可用性如何,有没有一种方法可以休眠准确的时间? 最佳答案 因为您正在使用preemptive操作系统,您无法保证您的进程能够在25毫秒内控制CPU。如果您仍想尝试,最好有一个轮询直到25毫秒过去的繁忙循环。这样的事情可能会起作用:importtimetarget_time=time.clock()+0.025whiletime.clock

c++ - Sleep() 与 _sleep() 函数

目前,我正在处理一个使用VisualStudio2010或更低版本为Windows开发(使用C和C++)的旧项目。我们希望将其更新为更新版本,例如VisualStudio2015或2017。我发现_sleep()函数是nolongersupportedbyMicrosoft而我将使用Sleep()功能。我没有找到等效的documentation对于旧的_sleep()函数,我想知道这两个函数的行为是否完全相同?这MSDNpost让我想知道是否唯一的区别在于参数的类型?预先感谢您的回答。 最佳答案 正如RbMm提到的,_sleep是i