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中定时器并非多线程相关推荐

  1. vc中c语言多线程,VS2010配置C/C++多线程使用环境

    在用C语言做图像处理的过程中,经常会使用到多线程操作,对于没有使用过的朋友们,或许还要折腾半天,今天这里简单总结一下配置方法: 1,下载pthread 的windows安装包:http://sourc ...

  2. vc中定时器的使用 (2)SetTimer函数的使用

    什么时候我们需要用到SetTimer函数呢?当你需要每个一段时间执行一件事的的时候就需要使用SetTimer函数了. 使用定时器的方法比较简单,通常告诉WINDOWS一个时间间隔,然后WINDOWS以 ...

  3. VC++中定时器SetTimer函数的应用总结

    什么时候我们需要用到SetTimer函数呢?当你 需要每个一段时间执行一件事的的时候就需要使用SetTimer函数了.使用定时器的方法比较简单,通常告诉WINDOWS一个时间间隔,然后WINDOWS以 ...

  4. c语言如何实现多线程VC,多线程技术在VC中的应用

    山东理工大学 贾永新 肖爱梅 Visual C++ 6.0 自发布以来,以其强大的功能及各种新特性受到广大编程爱好者的青睐.但是要想成为一个优秀的程序员,写出真正功能强大.能够快速响应且实用的程序就必 ...

  5. java定时任务中使用多线程_java项目中如何利用多线程实现一个定时器任务

    java项目中如何利用多线程实现一个定时器任务 发布时间:2020-11-10 16:04:03 来源:亿速云 阅读:86 作者:Leah 今天就跟大家聊聊有关java项目中如何利用多线程实现一个定时 ...

  6. VC中的宏 (#define) 与预处理 (#if/#ifdef/#pragma) 的使用方法总结。

    C/C++ 预定义宏 例子:C/C++ 预定义宏的取值 C/C++ 预定义宏用途:诊断与调试输出 CRT 的诊断与调试输出:assert, _ASSERT/_ASSERTE, _RPTn/_RPTFn ...

  7. VC中基于 Windows 的精确定时

    方式一:VC中的WM_TIMER消息映射能进行简单的时间控制.首先调用函数SetTimer()设置定时 间隔,如SetTimer(0,200,NULL)即为设置200ms的时间间隔.然后在应用程序中增 ...

  8. C#多线程学习之(五)使用定时器进行多线程的自动管理

    本文实例讲述了C#多线程学习之使用定时器进行多线程的自动管理.分享给大家供大家参考.具体分析如下: Timer类:设置一个定时器,定时执行用户指定的函数. 定时器启动后,系统将自动建立一个新的线程,执 ...

  9. VC中GetLastError()获取错误信息的使用,以及错误代码的含义

    在VC中编写应用程序时,经常需要涉及到错误处理问题.许多函数调用只用TRUE和FALSE来表明函数的运行结果.一旦出现错误,MSDN中往往会指出请用GetLastError()函数来获得错误原因 可问 ...

最新文章

  1. 关于ueditor多图上传加水印
  2. 深度学习核心技术精讲100篇(四十)-微信“看一看“内容理解与推荐,背后深层次的技术知多少?
  3. 电脑刚开机显示正在锁定计算机在怎么回事,电脑开机一直停留在诊断自动修复界面怎么回事...
  4. SAP UI5 ResponsiveGridLayout
  5. 华为服务器如何登录修改密码,如何修改云服务器的登录密码
  6. Linux内核升级,从2.6.18升级到3.2.14
  7. CORS(跨域资源共享)
  8. java中如何声明外键约束,外键约束不正确 - java-mysql
  9. 与时俱进 挪威央行运用大数据预测经济情况
  10. EPPlus.Core 1.5.4 报错 font '?' cannot be found docker core运行时2.1.0 alpine镜像 缺失微软字体...
  11. 用JavaScript写的U校园自动答题浏览器分析
  12. Java、JSP教务排课系统
  13. 获取115网盘文件列表
  14. 关于魔兽守卫军的改进建议
  15. 单片机仿真指示灯开关控制器
  16. 【学习档案】word文档转为XML格式
  17. vxWorks6.6下基于vxBus的以太网驱动开发
  18. 自学C语言的最大难题是什么?
  19. Ubuntu安装luminati
  20. Yandex企业邮箱注册

热门文章

  1. 生日快乐的代码_贺渝同学生日快乐!
  2. ycsb mysql_使用 YCSB 测试 MySQL on TerarkDB
  3. 一元二次方程java实现代码
  4. 鸿蒙系统笔记本产业链,鸿蒙系统笔记本电脑要来了?!
  5. Python大数据分析之实时疫情数据可视化(含代码)
  6. Java从指定URL下载文件并保存到指定目录
  7. 文储研习社第14期 | 区块链骗局避坑指南
  8. 3dmax选中间隔面的步骤教程
  9. 代理模式Proxy (非常容易看懂)
  10. 计算机工程学院文艺例会,信息工程学院学生会第一次全体例会