C++里Sleep()函数问题
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C++里Sleep()函数问题相关的知识,希望对你有一定的参考价值。
int numMarker = markCapture.m_markers.size();
if (numMarker>0 )
for (int i=0; i<numMarker; i++)
if(std::bitset<10>(markCapture.m_markers[0].m_id)== 901)
printf("-----------------");
Sleep(2000);
整个函数式套在while(1)的循环体里面的,遇到的问题是,当我触发让std::bitset<10>(markCapture.m_markers[0].m_id)==901时,程序会打印两次,sleep前打印一次,然后消耗掉2000毫秒后 又打印了一次。求指教!
printf打印的条件,需要满足:
numMaker大于0 if (numMarker>0 )
i变量小于numMaker的值 for (int i=0; i<numMarker; i++)
m_id等于901 if(std::bitset<10>(markCapture.m_markers[0].m_id)== 901)
你检查一下自己的代码,当第一次打印之后,上面的3个条件是否发生了变化(第2个条件会变化,因为有i++),发生了变化以后,上面3个条件是否还成立。如何3个条件还成立,必然会继续打印的。
追问发生变化后numMarker=0,,m_id=null;,三个条件都不成立,但是它仍然打印一次!
追答>>> 发生变化后numMarker=0,,m_id=null;,
你的代码里,没有指令修改掉number和m_id呀
如果numberMaker是2的话,会再for循环中执行两次。
另外,提示你因为Sleep会堵塞线程,有的时候print的输出不一定会打印出来。(即有可能打印的不是本次的printf内容)建议你在printf后面增加\n\r试试。
不减的话那每次循环都能执行到if里,那每次都会打印,不会只有两次
把循环全部代码截图来看看吧追问
是这样的,我的程序在不用sleep之前是会一直输出的,我加了个sleep想让程序再输出第一次后挂起两秒。结果是输出一次等待两秒后程序又进行了第二次输出,544517646我的QQ,如果您不忙,可以加我QQ谈吗?
追答挂起两秒循环并没有退出,当然会继续输出啊
本回答被提问者采纳 参考技术B 你忘了 break追问break加哪?加上去会让我的程序退出的!
以上是关于C++里Sleep()函数问题的主要内容,如果未能解决你的问题,请参考以下文章
使用c++在mac上使用sleep函数告诉程序等待0.1毫秒
在C++里执行VBS 如何执行VBS命令啊 比如Wscript.Sleep 5000 '