- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
浅谈.Net下的多线程和并行计算(全集).pdf
作者信息 1
IT 工程技术网,
浅谈.NET 下的多线程和并行计算
声明:以下文字由关注IT人所关注的,IT工程技术网
()根据网络文章整理提供,只为传递知
识之目的,如有权利人对此持有异议,请提供权利证明告知
我们。
作者信息
作者:lovecindywang
lovecindywang的个人主页
1. 前言
作为一个ASP.NET 开发人员,在之前的开发经历中接触多线程编程的机会并不是很多,但
是随着.NET 4.0 的发布临近,我越来越感受到未来的1-2 年中并行计算将会有很大的应用。
于是决定通过写日志的方式来总结一下.NET 3.5 下的多线程编程进而引入.NET 4.0 提供
的新的并行库以及新的并行编程模式和编程的思维方式。
个人觉得在日常的编程中对于ASP.NET 程序员来说使用多线程编程不是很多,其实我们无
时无刻不在享受多线程的优势。首先,WEB 服务器环境就是一个多线程环境,每一个请求
都是独立的线程,如果没有多线程很难想象只能同步处理一个请求的WEB 服务器有什么用,
类似,我们的数据库也应该是一个多线程环境。对于Windows 应用程序的程序员来说恐怕
就很难不接触多线程了,最简单的就是我们会新开线程去做一些耗时的操作,这样就可以避
免UI 停止响应,在操作结束后再把操作结果应用在主线程的控件上。虽然说这样的应用是
多线程,甚至很多程序员习惯什么操作都新开一个线程去做,但是我觉得这样的多线程应用
的思维还停留在单核时代,在多核时代,我们确实可以让任务实际的并行执行而不是看上去
并行执行。
首先来说说概念,进程和线程的基本的概念不用多说,自然我们也能理解一个进程至少包含
一个线程。通过在一个进程中开启多个线程,我们就可以让一个程序在同一时间看上去能做
多个事情,比如可以在接受用户响应的时候进行一些计算。在以前处理器往往只有一个核心,
也就是说在同一时间,处理器只能做一件事情。那么怎么实现之前说的多个线程同时执行呢。
其实这个同时只是表面上看上去同时,本质上多个线程依次占用处理器的若干时间片,大家
前言 2
IT 工程技术网,
轮流使用其资源,由于这个时间片非常短,所以在一个长的时间看来似乎是几个线程同时得
到了执行。
举一个生动的例子,我们经常看到有一些画家能同时在一个画布上画两个不同的图片,一个
画人一个画房子,最后一起完成这个画。但仔细看的话发现,他是两手拿了两只画笔,在这
里画一笔那里画一笔,在同一时间其实也只有一只笔在画。这个画家应该也像普通人一样是
单核的,只是线程切换比较快罢了。我经常在打电话的时候和网友进行聊天,在同一时间做
两件事情,但是这样很费脑子,在打字前我要回忆一下刚才聊天的内容,然后输入聊天的文
字,然后再去回想一下刚才那哥们说了啥,在电话里面回他一句,这种回忆的工作就是准备
线程的上下文,交给脑子去处理。虽然同一时间是做了两件事情,但是这个上下文的准备工
作也浪费了点时间,如果我在打电话网络聊天的同事在去做第三件事情比如看电影,那我估
计就不行了。所以,线程也不能开的很多,特别对于人脑来说。但是对于电脑处理器来说就
不一样了,你只要准备好数据和指令他执行就是了,至于这些事情来自几件事情它不关心,
24 小时一秒都不浪费在执行指令完全没问题,当然你也可以让它闲着。
您可能会想了,既然线程切换需要时间,那么我们开两个线程执行两个任务不是还没有一个
一个执行来的快吗?其实即使对于单核的处理器都不一定,因为在实际的应用中我们的任务
往往不可能从头计算到尾一直占用处理器资源,在很多时候我们要等待IO 响应或用户的响
应,如果只是一个线程做事情的话处理器太闲了。对于现在多核的处理器来说,在同一时刻
理论上可以在每一个处理器上都并行执行指令,我们就更需要利用多线程来提高运算速度了。
当然也不是说一个任务要执行10秒,我们在双核的机器上并行执行这个任务只需要5秒了,
那是因为很多时候这个任务很难划分成两个分支来并行执行,如果每个指令都要依靠上个指
令的执行结果,那么这样的操作很难在多个处理器上并行执行。但是,我们可以这样想,至
少如果有两个这样任务的话,我们就可以完全利用多个处理器
您可能关注的文档
最近下载
- 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)