vc中定时器并非多线程
VC++中timer很容易给人感觉是多线程的。其实不然,他是通过消息触发事件的。通过SetTimer函数设定定时器后,在规定时间内向消息队列中加入wm_timer消息来触发事件。并且只有该消息返回后才处理下个消息。
可以通过程序来验证。
BOOL bThreadEnd = TRUE;
UINT ThreadPro(LPVOID pParam);
void CTestThreadDlg::OnTimer(UINT nIDEvent)
{
// TODO: Add your message handler code here and/or call default
//死循环。。这时候窗口不会响应事件。
int a =1;
if (bThreadEnd)//全局变量确保线程只创建一个
{
pMyThread = AfxBeginThread(ThreadPro, (LPVOID)&a);//创建线程
bThreadEnd = false;
}
CDialog::OnTimer(nIDEvent);
}
UINT ThreadPro(LPVOID pParam) //线程事件函数
{
while (1)
{
}
bThreadEnd = true;
return 1;
}
以上程序,用timer的死循环和线程事件函数的死循环对比可知。。timer并非多线程的。。。
OnTimer实现了若干段程序的并行运行。
对于单CPU来说,是不可能实现程序段的并行运行的,只能是交替运行。其实它与其他的消息没有什么大的区别,只不过此消息的入队是循环的。
不知道小弟说的对不对,望大侠指点!
摘自 踏雪无痕
vc中定时器并非多线程相关推荐
- vc中c语言多线程,VS2010配置C/C++多线程使用环境
在用C语言做图像处理的过程中,经常会使用到多线程操作,对于没有使用过的朋友们,或许还要折腾半天,今天这里简单总结一下配置方法: 1,下载pthread 的windows安装包:http://sourc ...
- vc中定时器的使用 (2)SetTimer函数的使用
什么时候我们需要用到SetTimer函数呢?当你需要每个一段时间执行一件事的的时候就需要使用SetTimer函数了. 使用定时器的方法比较简单,通常告诉WINDOWS一个时间间隔,然后WINDOWS以 ...
- VC++中定时器SetTimer函数的应用总结
什么时候我们需要用到SetTimer函数呢?当你 需要每个一段时间执行一件事的的时候就需要使用SetTimer函数了.使用定时器的方法比较简单,通常告诉WINDOWS一个时间间隔,然后WINDOWS以 ...
- c语言如何实现多线程VC,多线程技术在VC中的应用
山东理工大学 贾永新 肖爱梅 Visual C++ 6.0 自发布以来,以其强大的功能及各种新特性受到广大编程爱好者的青睐.但是要想成为一个优秀的程序员,写出真正功能强大.能够快速响应且实用的程序就必 ...
- java定时任务中使用多线程_java项目中如何利用多线程实现一个定时器任务
java项目中如何利用多线程实现一个定时器任务 发布时间:2020-11-10 16:04:03 来源:亿速云 阅读:86 作者:Leah 今天就跟大家聊聊有关java项目中如何利用多线程实现一个定时 ...
- VC中的宏 (#define) 与预处理 (#if/#ifdef/#pragma) 的使用方法总结。
C/C++ 预定义宏 例子:C/C++ 预定义宏的取值 C/C++ 预定义宏用途:诊断与调试输出 CRT 的诊断与调试输出:assert, _ASSERT/_ASSERTE, _RPTn/_RPTFn ...
- VC中基于 Windows 的精确定时
方式一:VC中的WM_TIMER消息映射能进行简单的时间控制.首先调用函数SetTimer()设置定时 间隔,如SetTimer(0,200,NULL)即为设置200ms的时间间隔.然后在应用程序中增 ...
- C#多线程学习之(五)使用定时器进行多线程的自动管理
本文实例讲述了C#多线程学习之使用定时器进行多线程的自动管理.分享给大家供大家参考.具体分析如下: Timer类:设置一个定时器,定时执行用户指定的函数. 定时器启动后,系统将自动建立一个新的线程,执 ...
- VC中GetLastError()获取错误信息的使用,以及错误代码的含义
在VC中编写应用程序时,经常需要涉及到错误处理问题.许多函数调用只用TRUE和FALSE来表明函数的运行结果.一旦出现错误,MSDN中往往会指出请用GetLastError()函数来获得错误原因 可问 ...
最新文章
- 关于ueditor多图上传加水印
- 深度学习核心技术精讲100篇(四十)-微信“看一看“内容理解与推荐,背后深层次的技术知多少?
- 电脑刚开机显示正在锁定计算机在怎么回事,电脑开机一直停留在诊断自动修复界面怎么回事...
- SAP UI5 ResponsiveGridLayout
- 华为服务器如何登录修改密码,如何修改云服务器的登录密码
- Linux内核升级,从2.6.18升级到3.2.14
- CORS(跨域资源共享)
- java中如何声明外键约束,外键约束不正确 - java-mysql
- 与时俱进 挪威央行运用大数据预测经济情况
- EPPlus.Core 1.5.4 报错 font '?' cannot be found docker core运行时2.1.0 alpine镜像 缺失微软字体...
- 用JavaScript写的U校园自动答题浏览器分析
- Java、JSP教务排课系统
- 获取115网盘文件列表
- 关于魔兽守卫军的改进建议
- 单片机仿真指示灯开关控制器
- 【学习档案】word文档转为XML格式
- vxWorks6.6下基于vxBus的以太网驱动开发
- 自学C语言的最大难题是什么?
- Ubuntu安装luminati
- Yandex企业邮箱注册