线程知识的学习 一
来源:互联网 发布:提词器app软件 编辑:程序博客网 时间:2024/05/18 00:35
线程之上——进程
在开始这篇博客主题——线程 之前,我们先来了解一下线程周边的一些概念,任何东西都不是孤立的,要想深入的理解一个知识,了解它的来源,它的环境是很重要的。那么线程的周边是什么样的环境呢?
首先,线程的大环境是操作系统,其次是让线程运动起来的大Boss——进程。操作环境,这个太复杂,这里不说了。我们来简要的说说进程这大Boss。
进程是指一个内存中运行的应用程序,每个进程都有自己独立的一块内存空间,比如在Windows系统中,一个运行的exe就是一个进程。也就是说
程序本身并不能单独运行,只有将程序装载到系统的内存中,系统为它分配资源才能运行,而这种执行的程序就称之为进程。所以程序和进程的区别就在于:程序是指令的集合,它是进程运行的静态描述文本;进程是程序的一次执行活动,属于动态概念。
我截取了本机的操作系统中的图来说明(任务管理器),看完图,相信进程已经在你心中有位置了。
由图也可以说明,我们的操作系统是多任务的操作系统。在多道编程中,我们允许多个程序同时加载到内存中,在操作系统的调度下,可以实现并发地执行。这是这样的设计,大大提高了CPU的利用率。进程的出现让每个用户感觉到自己独享CPU。
线程和进程的关系这里有一个很好的解释与大家共享:线程和进程的趣解
还有一点就是:进程是一个“执行中的程序”。程序是一个没有生命的实体,只有处理器赋予程序生命时,它才能成为一个活动的实体,我们才称其为进程。
接下来,我们主要来说线程。
执行任务的兵——线程
什么是线程呢?—— 兵
第一段中说到了进程是一个执行着的程序,那么怎么执行?答案就跟线程有关。进程带着任务来到操作系统中,然后找了几个人帮他实现这个功能,这就是所谓的:一个进程中可以启动多个线程。线程就是真正干活的兵。它的直接上司是进程。每个线程的任务是进程分派给它的。
举个小例子:如果把我们上课的过程看成一个进程的话,那么我们要做的是耳朵听老师讲课,手上还要记笔记,脑子还要思考问题,这样才能高效的完成听课的任务。那么我们把这三种分工:耳朵,手,脑子叫做线程,只有这三个 “兵” 结合起来,这个听课的任务算是合格的完成了。话又说回来了,如果其中一个线程 罢工,例如,手罢工了,那么这个听课效率就不高,或者说,手是在耳朵和脑袋之后才开始的工作,那么同样是听课一件事,把 “手做笔记” 放到了 “耳朵,脑子” 之后,那么就是延长了听课的时间,这就好比进程的效率没有,这就是我们平常说的性能问题吧。
以上的例子,还说明了一个问题,耳朵,脑子,手,在同一时间内工作,这就是并发,难道这就是我们所谓的并发编程?多线程?
那么,我们来围绕线程来谈谈线程的这些事情,先看一张宏观的图如下:
接下来的几篇博客,我们将按照图中的索引号来一起开始我们的线程之行。
- 线程知识的学习 一
- 一、线程的学习
- 线程知识小结一
- 线程知识的学习 二——线程基础
- 学习知识之多线程
- 线程的学习(一)
- 线程 相关知识 (一)
- 项目中学习的知识(一)
- PE知识学习(一)
- 线程知识的学习 三——基础
- 线程的一些知识
- 线程的一些知识 .
- 线程知识的小结
- 线程的一些知识
- 线程的一些知识
- 线程的一些知识
- 关于线程的知识
- 线程的相关知识
- 一个“蝇量级” C 语言协程库
- Android的 LinearLayout的布局属性
- Tomcat+MySql 配置图解
- English power——每天给彼此一个stupid smile
- 数字求和
- 线程知识的学习 一
- hdoj 5493 Queue 【线段树 单点更新 + 区间查询】
- 数字求和
- iOS float类型比较大小
- ocp-20
- iOS- 集成百度地图
- 【SSH快速进阶】——Hibernate自动建表
- iOS开发之有趣的UI —— iOS8之前和之后的自定义不等高cell
- ocp-21