MFC中Windows窗口消息循环及多线程之间关系

2023-05-16

   Windows中一个进程可以包含多个线程,由多个线程组成。在Windows应用程序中,窗体是由“UI线程(User Interface Thread)”的特殊类型的线程创建的。一个UI线程包含一个消息循环对列。在窗口运行过程中,按下控件或对窗口进行一些操作等同于向消息循环队列插入消息;然后由系统调用相应消息的响应函数,使用户操作得到响应。

   当窗口某个消息的响应函数占用大量时间时,必定会影响窗口对下一个消息的响应。因此,对与那些比较耗时的操作的响应,使用多线程应该是个比较好的选择。即在控件的响应函数中创建一个线程,在线程函数中完成比较耗时的操作。

    WaitForSingleObject()用于等待对线程函数的响应,通过这个函数也可以阻塞消息循环队列的运行,影响窗口的响应速度。

注意:创建型线程函数:    CreateThread(NULL, 0, ThreadProc, (LPVOID) NULL, 0, NULL);

        线程函数的格式:    DWORD WINAPI ThreadProc(LPVOID lpParameter);

    其中,线程函数必须是全局函数或者静态成员函数
 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

MFC中Windows窗口消息循环及多线程之间关系 的相关文章

随机推荐

  • 云服务器上mysql数据库环境安装配置

    1 访问云服务器 xff1a 云服务器端需在防火墙设置中添加mysql协议规则 放开端口默认为3306 2 访问云服务器 xff1a 修改云服务器数据库访问权限 3 c 连接实例 try DataTable dt 61 new DataTa
  • 正常配置文件实例模板

    lt xml version 61 34 1 0 34 encoding 61 34 utf 8 34 gt lt configuration gt lt configSections gt lt section name 61 34 Se
  • 多线程下调用ShowDialog时异常原因及解决办法

    提示在可以调用OLE之前 xff0c 必须将当前线程设置为单线程单元 xff08 STA xff09 模式 xff0c 请确保您的Main函数带有STAThreadAttribute 导入导出功能 xff0c 在调用ShowDialog时的
  • C#操作注册表增删改查及关机能保存问题

    为何用程序写入注册表后 xff0c 重启机器注册表项就彻底丢失呢 仔细看看RegCreateKeyEx的用法 其中的dwOptions使用 REG OPTION NON VOLATILE 而不是 REG OPTION VOLATILE 重启
  • vnc远程,在windows下如何实现vnc远程

    在平时的工作中 xff0c 因为工作性质 xff0c 所以经常会用到vnc远程 xff0c 那有小伙伴知道如何在win下面实现vnc远程吗 xff1f 哪款工具能较好的实现vnc远程呢 xff1f 别着急 xff0c 咱今天就来看一下如何在
  • 函数形参传递概念及问题分析

    普通函数参数 下面程序试图改变main函数中a和b的值 include lt stdio h gt void fun int x int y int c c 61 a a 61 b b 61 c int main int a 61 1 b
  • c语言中函数调用的原理及形参传递实质原理分析

    一 函数参数传递机制的基本理论 函数参数传递机制问题在本质上是调用函数 xff08 过程 xff09 和被调用函数 xff08 过程 xff09 在调用发生时进行通信的方法问题 基本的参数传递机制有两种 xff1a 值传递和引用传递 以下讨
  • c++中多线程传递参数原理分析

    线程可以共享进程的内存空间 xff0c 线程拥有自己独立内存 关于参数的传递 xff0c std thread的构造函数只会单纯的复制传入的变量 xff0c 特别需要注意的是传递引用时 xff0c 传入的是值的副本 xff0c 也就是说子线
  • 线程的局部变量ThreadLocal概念

    ThreadLocal是什么 对这个词语分解 xff0c 将其分为Thread和Local xff0c 顾名思义便是本线程的变量 xff0c 既然是当前线程的变量 xff0c 那么就意味着这个变量对于其他线程来说就是隔离的 xff0c 也就
  • C++多线程并发中线程管理

    一 何为并发 刚开始接触计算机编程语言时 xff0c 我们编写一个程序 xff0c 在main入口函数中调用其它的函数 xff0c 计算机按我们设定的调用逻辑来执行指令获得结果 如果我们想在程序中完成多个任务 xff0c 可以将每个任务实现
  • 多线程中堆和栈区别的深入解析

    很多现代操作系统中 xff0c 一个进程的 xff08 虚 xff09 地址空间大小为4G xff0c 分为系统空间和用户空间两部分 xff0c 系统空间为所有进程共享 xff0c 而用户空间是独立的 xff0c 一般WINDOWS进程的用
  • C语言中队列、堆栈、内存映射、多线程概念

    队列 xff1a 先近先出 xff1b 栈 xff1a 先近后出 xff1b 栈的大小是由编译器决定的 xff0c 默认大小是1M xff0c 可以更改 xff0c 但是一般不建议修改 xff0c 每个exe都有一个栈 xff0c 无法利用
  • C++多线程编程分析-线程间通信

    上文我们介绍了如何建立一个简单的多线程程序 xff0c 多线程之间不可避免的需要进行通信 相比于进程间通信来说 xff0c 线程间通信无疑是相对比较简单的 首先我们来看看最简单的方法 xff0c 那就是使用全局变量 xff08 静态变量也可
  • 多线程访问全局变量和局部变量剖析

    如果一个变量是成员变量 xff0c 那么多个线程对同一个对象的成员变量进行操作时 xff0c 它们对该成员变量是彼此影响的 xff0c 也就是说一个线程对成员变量的改变会影响到另一个线程 如果一个变量是局部变量 xff0c 那么每个线程都会
  • c语言中全局变量多线程调用-局部变量、静态局部变量、全局变量与静态全局变量分析

    基本概念 xff1a 作用域 xff1a 起作用的区域 xff0c 也就是可以工作的范围 代码块 xff1a 所谓代码块 xff0c 就是用 括起来的一段代码 数据段 xff1a 数据段存的是数 xff0c 像全局变量就是存在数据段的 代码
  • vnc viewer 绿色版,6款超好用的vnc viewer 绿色版

    市面上形形色色的vnc viewer 绿色版软件很多 在众多的vnc viewer 绿色版软件中 你会选择哪一款呢 你所了解的vnc viewer 绿色版又有哪些呢 接下来让我们一起看看有哪些好用的vnc viewer 绿色版软件吧 第一款
  • django 框架模型之models常用的Field,这些Field的参数、及常见错误原因及处理方案。

    1 django 模型models 常用字段 1 models AutoField 自增列 61 int 11 如果没有的话 xff0c 默认会生成一个名称为 id 的列 如果要显式的自定义一个自增列 xff0c 必须设置primary k
  • 干货丨ChatGPT大爆发以来,最值得收藏的30个AI工具,让你生产力爆表、效率无敌!

    随着ChatGPT的火爆出圈 xff0c 炸出来一堆 AI神器 xff0c 它们不仅大大拓宽了我们原本的能力范围 xff0c 更是让工作效率瞬间翻倍 接下来 xff0c 给大家推荐30个精选的 AI工具 xff0c 拿走 xff0c 直接用
  • 多线程下局部变量与全局变量的使用及区别

    局部变量是在栈中运行 每个运行的线程都有自己的堆栈 别的线程无法访问得到 xff0c 因此我们说 xff0c 局部变量是 安全 的 全局变量是在堆中运行 堆是对所有的线程都可见的 因此在两个以上的线程访问全局变量时 xff0c 就会出现所谓
  • MFC中Windows窗口消息循环及多线程之间关系

    Windows中一个进程可以包含多个线程 xff0c 由多个线程组成 在Windows应用程序中 xff0c 窗体是由 UI线程 xff08 User Interface Thread xff09 的特殊类型的线程创建的 一个UI线程包含一