qeventloop
eventloop
qtimer::singleshot(100,
&eventloop,
slot(quit()))
eventloop.exec()
创建事件循环
启动定时器,让其100ms后触发事件循环的quit()槽
启动事件循环
后面这种方法可以不影响其他线程的响应,又可以达到等待的目的。
你是什么版本?只有专业版以上才有。
下面看看在Win10系统中打开Hyper-V的图文教程。
将鼠标移至开始图标,单击右键(注意:是右键,不是左键)。
点击“控制面板”。
点击“程序”。
点击“启用或关闭windows功能”。
勾选“Hyper-V”,确定。
等待程序添加功能。
完成后,关闭,重启电脑。
使用线程睡眠:Sleep(1000)线程可以调用Sleep函数使其在指定时间内不被调度:
VOID Sleep(DWORD dwMilliseconds)
Sleep调用会挂起当前线程,dwMilliseconds毫秒之后再将其恢复为可调度的。Sleep函数有以下几点值得注意:Sleep调用会导致当前线程放弃其剩余的时间片
Sleep调用时,系统挂起当前线程的时长大约是dwMilliseconds毫秒——比如,当dwMilliseconds设置为100时,在大多数情况下,当前线程睡眠的时长并不会是100ms,可能是几百毫秒、几秒、几分钟甚至更长。因为Windows并不是一个实时系统,所以dwMilliseconds只是一个建议值
为dwMilliseconds传递INFINITE会使当前线程永远睡眠,这通常没什么用处
为dwMilliseconds传递0时,当前线程会放弃剩余的时间片,系统会尝试调度优先级等于或高于当前线程 的可调度线程,如果没有找到这样的线程,系统将马上重新调度调用Sleep的线程
切换:SwitchToThread
当前线程可以调用SwitchToThread强迫 *** 作系统调度另外的可调度线程(如果存在):
BOOL SwitchToThread()当前线程调用SwitchToThread时,系统会检查是否存在可调度的线程处于“饥饿”状态,如果没有找到,SwitchToThread立刻返回,系统继续执行当前线程,否则系统将暂停当前线程并调度处于“饥饿”状态的线程(无论该线程的优先级大小),“饥饿”线程的调度时间大约是一个时间片,然后系统调度将恢复正常。当线程A需要获得某资源,而该资源又被另一优先级较低的线程B占用时,A可以调用SwitchToThread迫使 *** 作系统调度低先级的进程,以期待B释放被占用的资源。当没有其它线程可调度时,SwitchToThread返回FALSE,否则返回一个非0值。SwitchToThread函数和Sleep(0)调用类似,不同之处在于SwitchToThread允许系统调度优先级低于当前线程的可调度线程,但Sleep(0)只允许调度优先级不低于当前线程的可调度线程。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)