日期:2014-05-18 浏览次数:20853 次
随着网络的快速发展,网络数据的传输任务越来越重,因此,异步交互技术应运而生。实现异步交互的手段有很多,比如最近正在学习的Ajax、多线程技术、服务器编程等都可以大大提高数据的传输和处理的效率。
相对于Ajax这样的服务器与客户端通过回调函数异步交互数据的方式,多线程从另一个层面提高了程序的效率。通过多线程,我们可以充分的利用CPU、更合理的分配内存,从而大大提高程序的效率。多线程是一种实现异步的手段,相当于程序中长出了三头六臂。
那么,究竟什么是多线程?
其实,线程表示一种执行权限!怎么理解呢?如果我们把一个方法放到了不同的线程中,那么这个方法就可以在不同的线程中独立运行,所以说,线程就是赋予某些方法同时执行的权限。一般的把3个或者更多的线程才称之为多线程。
在深入学习多线程之前,先对线程来个概览吧:
这里引用网上的一个小故事,作为对线程的入门理解:
“假设有一个公司,公司里有很多各司其职的职员,那么我们可以认为这个正常运作的公司就是一个进程,而公司里的职员就是线程。
一个公司至少得有一个职员吧,同理,一个进程至少包含一个线程。在公司里,你可以一个职员干所有的事,但是效率很显然是高不起来的,一个人的公司也不可能做大;一个程序中也可以只用一个线程去做事,但是像一个人的公司一样,效率很低,如果做大程序,效率更低——事实上现在几乎没有单线程的商业软件。
公司的职员越多,老板就得发越多的薪水给他们,还得耗费大量精力去管理他们,协调他们之间的矛盾和利益;程序也是如此,线程越多耗费的资源也越多,需要CPU时间去跟踪线程,还得解决诸如死锁,同步等问题。
总之,如果你不想你的公司被称为“皮包公司”,你就得多几个员工;如果你不想让你的程序显得稚气,就在你的程序里引入多线程吧!”
线程的概念理解起来虽然比较容易,但是线程的控制却不是一件易事。而如何做好线程的控制也正是学习的核心所在。在之后的一些博客中会陆续深入学习.NET平台下的多线程编程艺术,欢迎大家的交流!