- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
VB2008进程函数
进程和线程
2009-12-22 13:12
在.NET平台发布之前,“进程”的概念就已经存在于基于Windows的操作系统中。简单来说,进程是一个术语,用于描述当前运行的应用程序使用的一组资源(如外部代码库和主线程)以及必要的内存分配。对于加载到内存中的每个*.exe,OS创建单独的、隔离的进程,在其生命周期中使用该进程。使用这种应用程序隔离的方法,就可以产生更为健壮的和稳定的运行库环境,前提是一个进程的失效不会影响另一个进程的机能。
现在,每个Windows都被分配一个唯一的进程标识符(Process Identifier,PID),该进程标识符可能由OS根据需要独立地加载和卸载。使用Windows Task Manager(任务管理器)实用程序(通过Ctrl+Shift+Esc按键组合激活)可以查看运行在给定机器上的进程的各种状态,包括该进程的PID和映像名。图17-1显示了Windows Task Manager的Processes选项卡。
注意:
默认情况下,Processes选项卡的PID列不可见。为了查看该列,可选择View | Select Columns菜单选项并选中PID(Process Identifier)复选框。
每个Windows进程都确切地有一个主“线程”,该线程的作用是应用程序的入口点。第18章将介绍如何使用System.Threading名称空间创建额外的线程和线程安全代码;然而,为了帮助了解此处介绍的主题,我们需要提供一些有效的定义。首先,线程是进程中的执行路径。按照正式的说法,进程的入口点(Main()方法)创建的第一个线程称为主线程。
包含一个执行主线程的进程在本质上是线程安全的,因为给定时间内只有一个线程可以访问应用程序中的数据。然而,如果唯一的线程正在执行复杂的操作(例如,输出很长的文本文件、执行包含大量数学操作的计算、或者尝试连接到位于数千英里远的远程服务器),单线程的应用程序(特别是基于GUI的应用程序,例如Windows Forms应用程序)就可能显得对用户的响应不那么灵敏。
由于单线程应用程序具有这种潜在的缺陷,Windows操作系统允许主线程产生额外的辅助线程,该操作在过去涉及调用大量基于C的Win32 API函数,如CreateThread()。每个线程(主线程或辅助线程)都成为进程中的独特执行路径,并且具有对所有共享数据点的当前访问。
开发人员通常创建额外的线程来帮助改进程序的整体响应灵敏度。多线程的进程提供了大量活动差不多同时发生的假象。例如,应用程序可能产生一个工作者线程来执行劳动密集的工作单位(如打印大型的文本文件)。当这个辅助线程正在执行打印操作时,主线程仍然可以响应用户输入,这就为整个进程提供了提高性能的潜力。然而,实际情况可能并不是如此:在某个进程中使用过多的线程实际上会降低性能,因为CPU必须在进程的活动线程之间切换(这需要花费一定的时间)。
实际上,多线程是OS提供的最常见的假象。只有一个CPU的机器不能够同时确切地处理多个线程。相反,基于线程的优先级别,单一的CPU在某个时间单位(称为时间片)内只执行一个线程。当某个线程的时间片启动时,就会挂起已有的线程以允许另一个线程执行它的业务。为了让线程记住在其被挂起之前所发生的情况,为每个线程提供了写入到线程本地存储器(Thread Local Storage,TLS)的能力,并且为其提供了单独的调用栈,如图
线程本地存储器(TLS)是由OS专门分配给每个线程的内存区域。
如果您才开始学习线程这个主题,并不需要深入研究细节此时,只需要记住线程是Windows进程中的独特执行路径。每个进程都有一个主线程(通过可执行文件的Main()方法创建),并且可能包含已经通过编程方式创建的额外线程。
17.1.2 在.NET平台下与进程交互
虽然进程和线程并不是新内容,但是在.NET平台下与这些原始内容进行交互有很大的改动(为了更好地进行交互)。接下来首先介绍如何使用.NET基类库与进程交互。
System.Diagnostics名称空间定义了大量用于以编程方式与进程交互的类型,并且定义了各种与诊断相关的类型,如系统事件日志和性能计数器。本章中只介绍以进程为中心的类型,表17-1定义了这些类型。
表17-1 重要的System.Diagnostics名称空间成员
System.Diagnostics名称空间中
以进程为中心的类型
实 际 含 义
Process
Process类提供了对本地和远程进程的访问,并且允许以编程方式启动和停止进程
ProcessModule
该类型代表加载到特定进程中的模块(*.exe或*.dll)。ProcessModule类型可以代表任何模块——基于COM的模块、基于.NET的模块或基于C的传统
您可能关注的文档
- 43图形的变换.ppt
- 校长学校德育日认识.doc
- 【梁平老年福利院情况调研报告】-【杨镇华】.doc
- 爬山(表格式).doc
- 品德与社会四年级第一单元第二课教学设计.doc
- 09年中考试卷分析.doc
- 3-4机械振动 测试题.doc
- 3S技术导论习题.doc
- 2013年山东省专科.docx
- 360就“广告过滤”发说明 澄清封杀门户广告传言.doc
- 山东聊城市文轩中学2026届数学八年级第一学期期末统考试题含解析.doc
- 安徽省芜湖市繁昌县2026届八年级数学第一学期期末预测试题含解析.doc
- 辽宁省锦州市凌海市2026届九年级数学第一学期期末调研模拟试题含解析.doc
- 江苏省泰州市姜堰区2026届八年级数学第一学期期末考试模拟试题含解析.doc
- 2026届广西桂林市灌阳县数学九上期末经典试题含解析.doc
- 安徽省马鞍山市2026届数学八上期末达标检测模拟试题含解析.doc
- 山南市重点中学2026届数学八年级第一学期期末学业水平测试模拟试题含解析.doc
- 种子预约生产合同协议书(精选).doc
- 石材买卖(合同)与石材买卖(合同)范本.doc
- 六、劳动合同书(16页版本).doc
原创力文档


文档评论(0)