C++想实现每10秒运行个方法,就是循环,但又不影响 同线程继续往下走
用计时器的话是导致该线程停止10秒,并不是我要的结果,我是要该方法每10秒运行一次,同时不影响到线程继续往下跑...
用计时器的话是导致该线程停止10秒,并不是我要的结果,我是要该方法每10秒运行一次,同时不影响到线程继续往下跑
展开
4个回答
展开全部
计时及执行的方法都在一子线程里运行,但你的执行方法必须要自己重新设计。
该子线程,以及10秒一次执行的进程,必须要能时刻准备响应外部停止线程的指令(用临界区做同步),比较好的方式,是空闲时不断调用sleep(1),然后判断是否到时,外部是否要求线程中止,同时,你的那方法也应该能按此方式设计——如果有长期耗时执行过程,你也要有能力把它们拆分成至少是毫秒级别的单位,分开执行,执行过程中不需要sleep(1),但需要监视外部对线程的中止指令,一旦有指令,无论执行的方法还是线程本身,都要及时中止运行。这样才能整体上无阻塞。
定时也可以在主线程里用定时器做,到时间给子线程的窗口函数发个消息,让它执行方法,其他的仍是上述方式运作。
该子线程,以及10秒一次执行的进程,必须要能时刻准备响应外部停止线程的指令(用临界区做同步),比较好的方式,是空闲时不断调用sleep(1),然后判断是否到时,外部是否要求线程中止,同时,你的那方法也应该能按此方式设计——如果有长期耗时执行过程,你也要有能力把它们拆分成至少是毫秒级别的单位,分开执行,执行过程中不需要sleep(1),但需要监视外部对线程的中止指令,一旦有指令,无论执行的方法还是线程本身,都要及时中止运行。这样才能整体上无阻塞。
定时也可以在主线程里用定时器做,到时间给子线程的窗口函数发个消息,让它执行方法,其他的仍是上述方式运作。
展开全部
不可能不影响同线程继续运行
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
可以把方法单独放在一个线程里
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
计时器
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询