C++中定时器是否是基于多线程的原理?

时间:2022-02-17 00:10:14
比如我在主线程中启动了一个10秒的定时器, 那么时间到的时候, 是中断主线程去执行由定时器启动的内容还是说, 是有两线程,主线程执行自己的, 定时器响应函数又是一个线程?

请各位大虾指教,谢谢先

10 个解决方案

#1


No, 消息。

#2


C++不知道,反正在UNIX上由alarm产生一个SIGALARM的信号,如果没有用sigaction或者signal捕捉的话,系统默认是终止程序。不然当SIGALARM被捕捉时系统会暂停当前程序转而执行sigaction指定的中断处理程序。当然用多线程处理信号也是可以的,而且SIGALARM是线程独享的不会被误发送到其他线程中去,在某个线程中使用sigwait等待信号就可以

#3


不是,系统级是通过时钟中断.每隔固定时间,时钟中断会中断当前代码执行而跳转到中断执行程序(系统级代码). 而在这段代码中,可以在指定时间给用户程序发消息来通知用户.

#4


各位好!我公司近期大量的招聘C++人才,如有兴趣请
点:http://www.51job.com/sc/co_all_job.php

#5


windows是通过消息驱动,定时期是有系统定期给应用程序发送WM_TIMER消息来实现的,
而消息循环肯定会在主线程内进行,如果你要给另一个线程发消息,可以在主线程中响应WM_TIMER消息,然后自己定义消息,用SendMessage发送广播消息,这样在另一个线程中可以进行处理.

#6


不是!
定时器是定时器,线程是线程。

#7


windows API 中定时器是基于消息的。
 C++ 中的定时器?你自己要做个定时器的话,还是得单独开个线程。

#8


呵呵 线程是怎么实现的呢?  分时???

#9


C++定时器?
偶还没听说过.

#10


定时器怎么能和高级语言相联系呢?应该是和某种操作系统向关联的。

#1


No, 消息。

#2


C++不知道,反正在UNIX上由alarm产生一个SIGALARM的信号,如果没有用sigaction或者signal捕捉的话,系统默认是终止程序。不然当SIGALARM被捕捉时系统会暂停当前程序转而执行sigaction指定的中断处理程序。当然用多线程处理信号也是可以的,而且SIGALARM是线程独享的不会被误发送到其他线程中去,在某个线程中使用sigwait等待信号就可以

#3


不是,系统级是通过时钟中断.每隔固定时间,时钟中断会中断当前代码执行而跳转到中断执行程序(系统级代码). 而在这段代码中,可以在指定时间给用户程序发消息来通知用户.

#4


各位好!我公司近期大量的招聘C++人才,如有兴趣请
点:http://www.51job.com/sc/co_all_job.php

#5


windows是通过消息驱动,定时期是有系统定期给应用程序发送WM_TIMER消息来实现的,
而消息循环肯定会在主线程内进行,如果你要给另一个线程发消息,可以在主线程中响应WM_TIMER消息,然后自己定义消息,用SendMessage发送广播消息,这样在另一个线程中可以进行处理.

#6


不是!
定时器是定时器,线程是线程。

#7


windows API 中定时器是基于消息的。
 C++ 中的定时器?你自己要做个定时器的话,还是得单独开个线程。

#8


呵呵 线程是怎么实现的呢?  分时???

#9


C++定时器?
偶还没听说过.

#10


定时器怎么能和高级语言相联系呢?应该是和某种操作系统向关联的。