- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
深入浅出Win32多线程程序设计之基本概念
深入浅出Win32多线程程序设计之基本概念
引言
从单进程单线程到多进程多线程是操作系统发展的一种必然趋势,当年的DOS系统属于单任务操作系统,最优秀的程序员也只能通过驻留内存的方式实现所谓的多任务,而如今的Win32操作系统却可以一边听音乐,一边编程,一边打印文档。
理解多线程及其同步、互斥等通信方式是理解现代操作系统的关键一环,当我们精通了Win32多线程程序设计后,理解和学习其它操作系统的多任务控制也非常容易。许多程序员从来没有学习过嵌入式系统领域著名的操作系统VxWorks,但是立马就能在上面做开发,大概要归功于平时在Win32多线程上下的功夫。
因此,学习Win32多线程不仅对理解Win32本身有重要意义,而且对学习和领会其它操作系统也有触类旁通的作用。
进程与线程
先阐述一下进程和线程的概念和区别,这是一个许多大学老师也讲不清楚的问题。
进程(Process)是具有一定独立功能的程序关于某个数据集合上的一次运行活动,是系统进行资源分配和调度的一个独立单位。程序只是一组指令的有序集合,它本身没有任何运行的含义,只是一个静态实体。而进程则不同,它是程序在某个数据集上的执行,是一个动态实体。它因创建而产生,因调度而运行,因等待资源或事件而被处于等待状态,因完成任务而被撤消,反映了一个程序在一定的数据集上运行的全部动态过程。
线程(Thread)是进程的一个实体,是CPU调度和分派的基本单位。线程不能够独立执行,必须依存在应用程序中,由应用程序提供多个线程执行控制。
线程和进程的关系是:线程是属于进程的,线程运行在进程空间内,同一进程所产生的线程共享同一内存空间,当进程退出时该进程所产生的线程都会被强制退出并清除。线程可与属于同一进程的其它线程共享进程所拥有的全部资源,但是其本身基本上不拥有系统资源,只拥有一点在运行中必不可少的信息(如程序计数器、一组寄存器和栈)。
根据进程与线程的设置,操作系统大致分为如下类型:
(1)单进程、单线程,MS-DOS大致是这种操作系统;
(2)多进程、单线程,多数UNIX(及类UNIX的LINUX)是这种操作系统;
(3)多进程、多线程,Win32(Windows NT/2000/XP等)、Solaris 2.x和OS/2都是这种操作系统;
(4)单进程、多线程,VxWorks是这种操作系统。
在操作系统中引入线程带来的主要好处是:
(1)在进程内创建、终止线程比创建、终止进程要快;
(2)同一进程内的线程间切换比进程间的切换要快,尤其是用户级线程间的切换。另外,线程的出现还因为以下几个原因:
(1)并发程序的并发执行,在多处理环境下更为有效。一个并发程序可以建立一个进程,而这个并发程序中的若干并发程序段就可以分别建立若干线程,使这些线程在不同的处理机上执行。
(2)每个进程具有独立的地址空间,而该进程内的所有线程共享该地址空间。这样可以解决父子进程模型中,子进程必须复制父进程地址空间的问题。
(3)线程对解决客户/服务器模型非常有效。
Win32进程
1、进程间通信(IPC)
Win32进程间通信的方式主要有:
(1)剪贴板(Clip Board);
(2)动态数据交换(Dynamic Data Exchange);
(3)部件对象模型(Component Object Model);
(4)文件映射(File Mapping);
(5)邮件槽(Mail Slots);
(6)管道(Pipes);
(7)Win32套接字(Socket);
(8)远程过程调用(Remote Procedure Call);
(9)WM_COPYDATA消息(WM_COPYDATA Message)。
2、获取进程信息
在WIN32中,可使用在PSAPI .DLL中提供的Process status Helper函数帮助我们获取进程信息。
(1)EnumProcesses()函数可以获取进程的ID,其原型为:
BOOL EnumProcesses(DWORD * lpidProcess,
DWORD cb,
DWORD*cbNeeded);
参数lpidProcess:一个足够大的DWORD类型的数组,用于存放进程的ID值;
参数cb:存放进程ID值的数组的最大长度,是一个DWORD类型的数据;
参数cbNeeded:指向一个DWORD类型
您可能关注的文档
- (江西润华)海峡油20151029早评.doc
- (曹绍清)构建食物链和食物网概念生物卡片接龙活动.doc
- 淡江大学档案管理作业要点(草案) 95.doc
- 淡江大学法规订定格式及注意事项.doc
- (气候与天气系统).doc
- 淡江大学研究中心设置暨管理办法 .doc
- (煤)矿产资源分类.doc
- (现货黄金收盘)美联储官员加息路径分歧现货金周五上涨.doc
- (环河东路I40b)盖梁剪力销式支撑受力计算.doc
- (电子版发送)文件发文登记表.docx
- 2026年贵港市港南区自然资源局关于公开招聘编外聘用人员的备考题库及完整答案详解一套.docx
- 2026年陕西省商贸学校招聘外聘教师备考题库完整参考答案详解.docx
- 2026年重庆长安汽车股份有限公司北京长安汽车公司招聘备考题库有答案详解.docx
- 2026年许昌市公安局交通管理支队招聘备考题库及1套完整答案详解.docx
- 2026年烟台市莱山区教育和体育局公开招聘高层次人才备考题库及答案详解一套.docx
- 2026年空中能力层装备研究院招聘备考题库及答案详解参考.docx
- 2026年苏州市教育科学研究院长期公开招聘高层次人才备考题库及参考答案详解1套.docx
- 2026年道里区工程社区卫生服务中心招聘备考题库及一套参考答案详解.docx
- 2026年速看禹州法院招录3人丨名单发布禹州2人上榜丨失联、旷工郑州一事业单位发解聘备考题库及1套参.docx
- 中国科学院西北高原生物研究所2026年博士后招聘备考题库带答案详解.docx
最近下载
- 2026人教版小学一年级上学期语文期末综合试卷精选3套(含答案解析)(1).docx
- 天鹅(选自圣-桑《动物狂欢节》,总谱) 高清钢琴谱五线谱 .pdf VIP
- 实用化工产品配方与制备(6).doc VIP
- 提高外窗塞缝防渗漏一次验收合格率(陈启威).docx VIP
- 生存分析中的Cox模型比例风险假设检验.docx VIP
- ISO 9001(DIS)-2026《质量管理体系——要求》之6:“领导作用-5.1.2以顾客为关注焦点”专业深度解读和应用指导材料(编写2025A0).docx VIP
- 提高外窗塞缝防渗漏一次验收合格率(陈启威).pdf VIP
- 六年级数学上册第9讲甜甜咸咸就是我思维突破苏教版202106071121.pdf VIP
- 台州市椒江区2023-2024学年六年级数学第一学期期末调研模拟试题含答案.doc VIP
- 有限空间作业专项施工方案.docx VIP
原创力文档


文档评论(0)