如果time1的响应函数还没有执行完,而time2的时间到了的话,是否会响应time2的消息呢?
这时程序怎么执行呢?接下来两个定时器怎么计时呢???
谢谢!
7 个解决方案
#1
昏,你一个函数难道要执行20秒??
#2
sleep(2001);
^_^
^_^
#3
各自计时啊!
if(nIDEvent==1)
{
}
if(nIDEvent==2)
{
}
if(nIDEvent==1)
{
}
if(nIDEvent==2)
{
}
#4
需要定义不同的ONTIMER函数,在SetTimer时传进去。
#5
这个问题有意思,挺认真,并不可笑!
你设一个全局变量,用特定的值表示特定的执行状态,试一下吧,不过两者并行机会小有困难!
你设一个全局变量,用特定的值表示特定的执行状态,试一下吧,不过两者并行机会小有困难!
#6
我觉得如果在前一个OnTimer执行结束之前有新的WM_TIMER消息的话,这些后来的消息会合成一条,直到定时器函数执行结束。如果是两个定时器的话,相同ID的定时器合成一个吧。毕竟是低优先级的消息。
最好还是像楼上朋友说的,用不同的处理函数,在SetTimer时传进去吧
最好还是像楼上朋友说的,用不同的处理函数,在SetTimer时传进去吧
#7
首先要明确的一点是你的timer1和timer2是不是在同一个线程里。
1.在同一个线程里:
永远不可能同时响应2个OnTimer消息,这时如果在执行timer1的时候timer2的时间到了,系统只是把timer2的消息插入到消息队列里,但timer1肯定会先执行完才有可能响应timer2的消息处理。
2.在不同的线程里:
这个时候就有可能timer1还在处理的时候,timer1所在线程的时间片用完,转去执行timer2所在的线程。处理方法就是线程同步的问题了。可以利用关键代码段、事件、互斥体、信标等方法同步线程。
1.在同一个线程里:
永远不可能同时响应2个OnTimer消息,这时如果在执行timer1的时候timer2的时间到了,系统只是把timer2的消息插入到消息队列里,但timer1肯定会先执行完才有可能响应timer2的消息处理。
2.在不同的线程里:
这个时候就有可能timer1还在处理的时候,timer1所在线程的时间片用完,转去执行timer2所在的线程。处理方法就是线程同步的问题了。可以利用关键代码段、事件、互斥体、信标等方法同步线程。
#1
昏,你一个函数难道要执行20秒??
#2
sleep(2001);
^_^
^_^
#3
各自计时啊!
if(nIDEvent==1)
{
}
if(nIDEvent==2)
{
}
if(nIDEvent==1)
{
}
if(nIDEvent==2)
{
}
#4
需要定义不同的ONTIMER函数,在SetTimer时传进去。
#5
这个问题有意思,挺认真,并不可笑!
你设一个全局变量,用特定的值表示特定的执行状态,试一下吧,不过两者并行机会小有困难!
你设一个全局变量,用特定的值表示特定的执行状态,试一下吧,不过两者并行机会小有困难!
#6
我觉得如果在前一个OnTimer执行结束之前有新的WM_TIMER消息的话,这些后来的消息会合成一条,直到定时器函数执行结束。如果是两个定时器的话,相同ID的定时器合成一个吧。毕竟是低优先级的消息。
最好还是像楼上朋友说的,用不同的处理函数,在SetTimer时传进去吧
最好还是像楼上朋友说的,用不同的处理函数,在SetTimer时传进去吧
#7
首先要明确的一点是你的timer1和timer2是不是在同一个线程里。
1.在同一个线程里:
永远不可能同时响应2个OnTimer消息,这时如果在执行timer1的时候timer2的时间到了,系统只是把timer2的消息插入到消息队列里,但timer1肯定会先执行完才有可能响应timer2的消息处理。
2.在不同的线程里:
这个时候就有可能timer1还在处理的时候,timer1所在线程的时间片用完,转去执行timer2所在的线程。处理方法就是线程同步的问题了。可以利用关键代码段、事件、互斥体、信标等方法同步线程。
1.在同一个线程里:
永远不可能同时响应2个OnTimer消息,这时如果在执行timer1的时候timer2的时间到了,系统只是把timer2的消息插入到消息队列里,但timer1肯定会先执行完才有可能响应timer2的消息处理。
2.在不同的线程里:
这个时候就有可能timer1还在处理的时候,timer1所在线程的时间片用完,转去执行timer2所在的线程。处理方法就是线程同步的问题了。可以利用关键代码段、事件、互斥体、信标等方法同步线程。