撬开多线程的大门——学习多线程必须掌握的基本概念
1.进程
进程的概念从字义上理解相对还是比较抽象的,但进程实际上对我们并不陌生,可以说它无时不刻的伴随着我们的生活。当你每天上班打开电脑,运行微信与好友通讯、运行浏览器阅读网页新闻等,这一些将程序运行起来的操作,都属于创建了一个进程。并且我们可以对同一种程序重复运行多次,这意味着一个程序可以创建多个进程,例如我们时常针对Word这一种程序,反复的运行从而阅读不同的文档。
成都创新互联公司长期为近1000家客户提供的网站建设服务,团队从业经验10年,关注不同地域、不同群体,并针对不同对象提供差异化的产品和服务;打造开放共赢平台,与合作伙伴共同营造健康的互联网生态环境。为马边彝族企业提供专业的网站制作、成都网站制作,马边彝族网站改版等技术服务。拥有十年丰富建站经验和众多成功案例,为您定制开发。
根据我们日常生活中对程序使用的场景而言,我们可以通俗的将进程理解为:进程就是运行起来了的程序;进程是程序的一段执行过程;进程是一个正在执行的程序;进程是程序的实例。程序是静态的,通过运行程序就会产生动态的进程。总之,诸如此类。
正式地说,进程是一个操作系统级别的概念,进程是源于一个具有独立功能的程序,与指令、数据集合的一次运行活动。它是操作系统动态执行任务的基本单元,是操作系统进行资源分配的基本单位。在这一点上就类似于军事战役,司令就像操作系统,它不会对某个士兵下达命令或分配物资,而是以部队为单位下达命令并分配物资,调度各种部队来指挥作战,这里部队的调度分配就有点类似于进程。
从结构上,我们可以想象操作系统是间大房子,众多程序运行同在一件大房子里,如果没有隔离的房间,势必会错乱不堪。而进程会起到类似“房间”隔离的作用,让操作系统的运行环境更加稳定,即使一个程序失败也不会影响另一个程序。从这一点上,我们可以认为,进程提供了程序执行的独立环境和安全边界。
正在运行的操作系统(你现在的电脑)就是由各种进程的活动构成,你可以打开“任务管理器”,可以了解你当前计算机的所有进程,以及进程的资源分配情况。
2.线程
根据上文中的介绍,总而言之,我们可以将进程看作是一个正在运行的程序。既然是运行的程序,必定会对程序有所期许(指示/任务)。试想下,你打开某个程序使它运行是为了什么,你如果你打开“QQ音乐”肯定希望它播放一首你喜欢的歌曲,你如果打开“饿了么”你肯定你希望点一份外卖。对于以上这些,你对程序下达的“指示/任务”,实际上投射到程序当中,就会对应产生一条线程。这一点可以说明,线程是进程运行过程中执行的任务。
一个程序的运行对于用户而言,往往感知不到代码执行的存在,用户通常实现某个功能就点击相应的按钮。实际上,在点击按钮的背后,进程不光会产生一个线程,线程会根据对应的操作选择执行一条代码的路线,通过执行这条代码路线来实现相应的功能。
我们可以将充斥代码的程序想象成一幅旅游地图,地图上不同的旅游线路就像代码中不同的分支,我们选择不同的旅游线路就相当于选择不同的代码分支,通过不同的线路就可以到达不一样的景点。程序的执行也是如此,用户选择执行不同的操作,进程中就会创建不同的代码执行路线,线程会根据相应的路线执行代码,从而实现相应的功能。所以从执行层面,我们可以将线程理解成一条代码的执行路径。
当前标题:撬开多线程的大门——学习多线程必须掌握的基本概念
浏览地址:http://scyanting.com/article/dsoidid.html