《win32多线程程序设计》学习笔记三

Win32多线程程序设计指南与实践 本文还有配套的精品资源,点击获取 简介:Windows环境下的多线程编程技术能够有效提高CPU资源利用率,实现程序的高并发执行。本书详细介绍了多线程编程的核心概念、线程的创建与管理、同步机制、通信方式、线程优先级调整、局部存储、终止和性能优化等方面的知识。书中还探讨了调试多线程程序的技巧,并通过实例和实践指导,帮助开发者掌握在Win32平台上构建高效、稳定并发程序的能力。 ... 阅读详情

一、Busy Waiting

1、绝对不要再win32中使用Busy Loop


二、性能呢监视器(略)


三、等待一个线程结束

1、Win32提供函数WaitForSingleObject(),他能够在某个线程结束时被调用。




2、获得一个线程对线的handle后,WaitForSingleObject()要求操作系统让即将等待的线程睡觉,直到以下任何情况的发生:

 1)、正在执行的线程结束

 2)、dwMilliseconds时间结束,该值系从函数调用后开始计算


3、由于操作系统持续追踪正在执行的线程,即使正在执行的线程失事或被强迫结束,WaitForSingleObject()任然能够正常运行。


4、设定time-out为0,使你能够检查handle的状态并立即返回,没有片刻停留。如果handle已经备妥,那么这个函数会成功并传回WAIT_OBJECT_0。否则,这个函数立即返回并传回WAIT_TIMEOUT。



三、被激发的对象

1、当线程正在执行时,线程对象出于未激发状态。当线程结束时,线程对象就被激发了。因此,任何一个线程如果等待的是一个线程对象,将在等待对象结束时被调用,因为当前线程对象自动变为激发状态。


2、核心对象激发状态的含义





四、等待多个对象

1、Win32函数中的WaitForMultipleObjects()允许你在同一时间等待一个以上的对象



2、注意,handle数组中的元素个数上限,绝对不能够超过MAXIMUX_WAIT_OBJECTS。


五、在一个GUI程序中等待

1、MsgWaitForMultipleObjects()函数会在"对象被激发”或“消息到达队列“时被唤醒而返回



2、MsgWaitForMultipleObjects()的正确使用方式是改写主循环,使得激发状态之handle得以像消息一样被对待。

Win32 API下的多线程程序设计实战 本文还有配套的精品资源,点击获取 简介:本文深入探讨了如何使用Win32 API在Windows平台实现多线程编程,涵盖了多线程概念、线程创建、线程同步、线程通信和线程生命周期管理。实例程序通过创建多个线程来执行不同功能,如用户界面更新、计算、数据加载和定时器任务,以提升应用程序的性能和响应性。 1. 多线程概念及其重要性 多线程编程是现代操作系统中提高程序... 阅读详情

相关推荐

Win32多线程程序设计:深入理解与源码改进

在现代操作系统中,多线程编程是一种普遍的现象,它允许程序在多核心处理器上并行执行多个任务,提升应用程序的响应性和效率。Win32 API是Windows操作系统的核心应用程序接口,它提供了一系列函数和数据结构,使得开发者可以方便地在Windows平台上实现多线程程序设计。

weixin_26805451的博客 1074

学习笔记 -- Win32多线程程序设计(三) 同步机制 Critical section and Mutex

类似SendMessage() 为同步,PostMessage()为异步 线程中同步机制 --> Critical section Critical section 是一块线程共享资源,使用下面这些API, 来保证同一时间只有一个线程可以操作该critical section。 (即给资源加锁) void WINAPI InitializeCriticalSection(

duoluoxia的专栏 475

定制PYNQ的overlay

一、用HLS生成一个定制IP(加速器)(1)首先打开vivado hls,本人的版本是2017.2,点击创建一个新工程。(2)设置工程名和路径,顶层函数设置为add,创建一个新的C++程序,名字叫做adder.cpp,不用在testbench中添加文件。选择板子的时候搜索xc7z020clg400-1,这是PYNQ的板子号,选择完成。             (3)在左侧的菜单栏里选择Sourc...

bramblewalls的博客 1万+

WIN32多线程程序设计学习笔记(第二章) 收藏

<br />WIN32多线程程序设计学习笔记(第二章) 收藏 <br />  <br />WIN32多线程程序设计学习笔记(第二章)<br /> <br />《WIN32多线程程序设计》这本书也看了好多遍,但总是觉得印象不深;我想是不是应该做做笔记,一来可以加深一下印象。二也在可以在用时方便查阅。J<br /> <br />首先,我觉得线程一点都不难(这样的心理暗示会使我觉得学的轻松一些);<br />why?  <br />与调用函数的过程类似;线程只不过用CreateThread的API将函数<br /

looob的专栏 535

IGBT基础知识

IGBT

u010783226的专栏 1万+

Linux运维人,该醒醒了,2019年要变天了

外界都说运维只是处于被动低效率手工救火的状态,企业对其重视程度不高,提起运维很多人能联想到的字眼就有“苦逼”、“辛苦”、“加班”、“背锅”。在大数据、人工智能、容器技术的强力加持下,运维这个传统的技术工种已经从“机械劳动”这样的刻板印象中蜕变出来,成为了任何一家技术公司所必须依赖和大力投入的核心技术能力。 现在,运维人员的发展前景也开始让很多程序员眼羡,作为Linux运维人员的你:这一年,你的L...

qq_43083284的博客 1万+

【Win32 多线程程序设计基础第一章笔记】

在计算机技术的演进中,“线程(Thread)” 始终处于 “被重视却易被误解” 的特殊地位。正如《Win32 多线程程序设计》第一章开篇所言:“计算机工业界每有新技术问世,人们总是先担忧其重要性,直到竞争对手采用才急急赶上;最终用户觉得需要它,却未必了解它是什么。” 线程技术正是如此 —— 它并非新事物,却借着 Windows NT 与 Windows 95 的庞大装机量,首次从操作系统教科书的理论概念,普及为个人电脑程序设计的核心工具。从术语定义来看,线程是比进程(Process)更小的执行单元。

云小逸的博客 1034

bartender 10.1破解版|bartender条码打印10.1

点击下载出处:BarTender10.1破解版 bartender10.1破解版是一款专业的条码打印软件,在行业内广受好评,通过使用bartender我们可以将标签设计这个复杂的过程变得更简便,在设计中快速调整,即刻打印,非常迅速,BarTender10.1破解版不仅支持的标签类型包括EPC Class 1 、Gen2 、ISO 18000-6b 、ISO 15693 、Tag-It 、I-CO...

weixin_44924147的博客 6万+

【Win32 多线程程序设计基础第三章笔记】

本文档基于《Win32多线程程序设计.pdf》第三章内容整理,全程围绕Win32多线程中“等待机制”展开,针对零基础读者设计——不堆砌复杂术语,而是用“朋友打印文件”“线程信号灯”等通俗比喻,结合文档中原版代码案例,拆解“为什么要高效等待”“如何等待单个线程”“如何定时触发任务”“如何等待多个对象”“GUI程序如何兼顾等待与UI响应”等核心问题,所有知识点均来自指定文档,未添加外部内容,确保内容的准确性与针对性。

云小逸的博客 897

【MODBUS】Java实现的Modbus协议类库——推荐j2mod库

Jamod是另一个开源的Modbus Java库。这个库的设计是完全面向对象的,基于抽象,应该支持易于理解、可重用性和可扩展性。它支持Modbus RTU和Modbus TCP,并且提供了主站和从站的功能。这是jamod Modbus库的一个分支,取自1.2.1版本,根据Apache 2许可证发布,包含在该项目的SVN存储库中。j2mod项目的目标是基于Java编程语言生成一个功能更全面的Modbus(tm)通信库。这是一个积极开发的项目,接受具有Modbus主站和从站开发经验的专业软件工程师提交的文件。

开源物联网项目商业化作者 5639

Vue+OpenLayers:解决中国境内OpenStreetMap地图加载问题

然而,在使用OpenLayers和Vue框架搭建地图应用时,很多中国开发者可能会遇到一个常见问题:OpenStreetMap(OSM)地图无法正常加载。为了解决这个问题,我们可以使用其他方式获取地图数据,比如使用国内的地图服务提供商。通过使用国内地图服务商提供的地图数据,我们可以解决OpenStreetMap地图加载问题。然后,我们创建一个OpenLayers地图对象,并指定地图图层的源为国内地图服务商提供的地图URL。属性,可以将地图的中心点和缩放级别调整到我们需要的位置。

CodeWhizZ的博客 8273

《Win32多线程程序设计》读后感

吐槽一句,纯粹把csdn的博客当成笔记本了。         这个月读的书籍是《Win32多线程程序设计》,忘了在那儿看到推荐这本书的,结果去图书馆一查2002年出版的,在图书馆找到这本书时把我吓着了,封面都掉了,可以想象它的历史有多悠久。。。        只随便翻了几页就决定这个月就是它了,原因很简单,它将与多线程相关的很多概念将的很简单易懂,之前学习多线程相关的知识时很重要的一个问题就是

985

[xboard-ok210] 44 s5pv210开发板介绍和对比

文章目录前言四大S3C6410提供商友坚开发板UT-S5PV210华天正(润尔)real210飞凌开发板ok210九鼎x210友善之臂开发板tiny210mini210smart210天嵌开发板tq210sate210xboardxboardxboard之ok210 前言 四大S3C6410提供商 友坚开发板 UT-S5PV210 华天正(润尔) real210 飞凌开发板 ok210 九鼎 x210 友善之臂开发板 tiny210 mini210 smart210 天嵌开发板 tq210 sate210

鹰之翔 286

Win32API多线程程序设计学习笔记

http://blog.sina.com.cn/s/blog_499b249c010003nw.html    Win32API多线程程序设计学习笔记 CreateThread 函数功能:该函数创建一个在调用进程的地址空间中执行的线程。 函数原型:  HANDLE  CreateThread (  LPSECURITY_ATTRIBUTES lpThreadAttributes,

孙建军的博客 950

YOLOv11改进策略【Neck】| GSConv+Slim Neck:混合深度可分离卷积和标准卷积的轻量化网络设计

实时检测器架构的轻量级设计GsConv。

Limiiiing的博客 2311

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

深入浅出Win32多线程程序设计(一)

<br />  深入浅出Win32多线程程序设计之基本概念 <br />      引言<br /><br />   从单进程单线程到多进程多线程是操作系统发展的一种必然趋势,当年的DOS系统属于单任务操作系统,最优秀的程序员也只能通过驻留内存的方式实现所谓的"多任务",而如今的Win32操作系统却可以一边听音乐,一边编程,一边打印文档。<br /><br />   理解多线程及其同步、互斥等通信方式是理解现代操作系统的关键一环,当我们精通了Win32多线程程序设计后,理解和学习其它操作系统的多任务控

ARM专家的专栏 477

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

WIN32多线程程序设计学习笔记(第二章)

  WIN32多线程程序设计学习笔记(第二章) 《WIN32多线程程序设计》这本书也看了好多遍,但总是觉得印象不深;我想是不是应该做做笔记,一来可以加深一下印象。二也在可以在用时方便查阅。J 首先,我觉得线程一点都不难(这样的心理暗示会使我觉得学的轻松一些);why?  与调用函数的过程类似;线程只不过用CreateThread的API将函数封装起来,并产生一个与主

chinani的专栏 2721

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

《Win32多线程程序设计》学习笔记---(1)

        最近开始看《Win32多线程程序设计》 ,感觉受益匪浅,写出来的目的有两个;一是想看看自己理解的程度,能否总结出作者真正想表达的内容。2是与大家共享。好了,废话就不说那么多了!文章开始讲述了操作系统的演化,作者从早期的MS-DOS1.0版本单任务系统到2.x的可以允许常驻程序(TSR),但是MS-DOS视其为自己的一部分,不是一个应用程序或是一个进程。随后提及到了拥有合作型多任

hada1234的专栏 846

深入浅出Win32多线程程序设计之(三):线程通信

<br />深入浅出Win32多线程程序设计之线程通信<br /> 线程之间通信的两个基本问题是互斥和同步。<br /><br />   线程同步是指线程之间所具有的一种制约关系,一个线程的执行依赖另一个线程的消息,当它没有得到另一个线程的消息时应等待,直到消息到达时才被唤醒。<br /><br />    线程互斥是指对于共享的操作系统资源(指的是广义的"资源",而不是Windows的.res文件,譬如全局变量就是一种共享资源),在各线程访问时的 排它性。当有若干个线程都要使用某一共享资源时,任何

ARM专家的专栏 433

深入浅出Win32多线程程序设计之线程通信

 深入浅出Win32多线程程序设计之线程通信     线程之间通信的两个基本问题是互斥和同步。  线程同步是指线程之间所具有的一种制约关系,一个线程的执行依赖另一个线程的消息,当它没有得到另一个线程的消息时应等待,直到消息到达时才被唤醒。   线程互斥是指对于共享的操作系统资源(指的是广义的"资源",而不是Windows的.res文件,譬如全局变量就是一种共享资源),在各线程访

boy8239的专栏 1044

WIN32多线程程序设计学习笔记(第四章 上)

WIN32多线程程序设计学习笔记(第四章 上) 到目前为止,我已经知道如何创建线程,销毁线程及如何判断一个线程是否结束了;但运用线程,管理线程,如何使线程按自己意愿正确运行才是多线程程序设计的重点及难点。 大家知道,线程具有并发性,在同一时间段会存在多个线程,当这些线程同时存取同一数据时,就会有问题。就像在超市储物品一样,来的时候物品箱是空,转身拿物品准备储的时候,发现物品箱

chinani的专栏 2148

WIN32多线程程序设计学习笔记(第三章)

WIN32多线程程序设计学习笔记(第三章) 通过在上一章的学习,我学会使用GetExitCodeThread()这个函数来判断一个线程是否还在执行。通过这个函数,我就可以对付“某个线程必须在某个线程结束后才能运行”的情况。复习一下:程序片段:              for  ( ; ; )              {                     int r

chinani的专栏 2427

深入浅出Win32多线程程序设计

深入浅出Win32多线程程序设计之基本概念 2005-12-14 09:48作者:宋宝华出处:天极开发责任编辑:方舟   引言   从单进程单线程到多进程多线程是操作系统发展的一种必然趋势,当年的DOS系统属于单任务操作系统,最优秀的程序员也只能通过驻留内存的方式实现所谓的"多任务",而如今的Win32操作系统却可以一边听音乐,一边编程,一边打印文档。   理解多线程及其同步、互斥

amanda_123的专栏 973

Win32多线程程序设计学习资料

Win32多线程程序设计学习资料 【下载地址】Win32多线程程序设计学习资料 探索Win32多线程程序设计的精髓,这份学习资料为您提供了全面而深入的指导。通过《Win32多线程程序设计.pdf》,您将系统掌握多线程的基本概念、线程的创建与管理、同步机制、线程间通信以及资源管理等关键技能。文档结构清晰,内容详实,适合希望...

gitblog_06704的博客 304

WIN32多线程程序设计学习笔记[转]

 《WIN32多线程程序设计》这本书也看了好多遍,但总是觉得印象不深;我想是不是应该做做笔记,一来可以加深一下印象。二也在可以在用时方便查阅。J    首先,我觉得线程一点都不难(这样的心理暗示会使我觉得学的轻松一些); why?  与调用函数的过程类似;线程只不过用CreateThread的API将函数 HANDLE hThread = CreateThread (

sc_valentine21的专栏 2403
上一篇: 《win32多线程程序设计》学习笔记二
下一篇: 《TCP/IP详解卷一:协议》学习笔记一
一世豁然
博客等级 码龄15年 1276粉丝 146原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值