- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
深入浅出Win32多线程程序设计之基本概念-Read.doc
深入浅出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类型数据的指针,用于返回进程的数目;
函数返回值:如果调用成功,返回TRUE,同时将所有进程的ID值存放在lpidProcess参数所指向的数组中,进程个数
您可能关注的文档
- 江苏城市职业学院徐州办学点关于命题、考试阅卷工作及成绩.doc
- 江苏消防科技动态-扬州消防网.doc
- 江苏省体外诊断试剂生产企业质量管理体系现场核查申请表2015年最新版.doc
- 江苏省建陵高级中学2013-2014学年高中数学1.3.3条件语句导学案(无.doc
- 江苏省运输管理综合信息服务平台-苏州市运输管理处.doc
- 江西省农村信用社生源地信用助学贷款县级合作协议-江西省教育厅.doc
- 池州学院皖南民俗文化研究中心工作简报2015年第1期(总第8期)出刊.doc
- 汽车信号装置典型故障检修.ppt
- 汽车车身校正实训室设备购置.doc-深圳市第二职业技术学校.doc
- 沈阳工业大学实验报告(计算机程序设计类)-沈阳工业大学教务处.doc
最近下载
- pep人教版六年级上学期英语全学期课时作业练习题.doc VIP
- 电气控制与PLC教案.pdf VIP
- NBT20277-2014 A240(S32101)双相不锈钢焊接规范.pdf VIP
- 2025秋人教版(PEP)(2024)三年级上册英语教学计划.docx VIP
- 初一英语文化课件.pptx VIP
- 高标准农田监理大纲方案投标文件(技术方案).doc
- 第一单元 第1课《可爱的我们》核心素养教学设计 2025湘美版美术三年级上册.pdf
- 2025云南省中职职教高考职业技能考烹饪类专业理论测试模拟05.doc VIP
- 客服人员心态与沟通技巧培训PPT.pptx VIP
- 农村公共卫生与健康促进.pptx VIP
文档评论(0)