- 12.3节: 进程的基础概念
- 已经是最后一篇了
广州番禺Python, Java小班周末班培训
薯条老师的线下Python小班办得很好,学员的平均就业薪资有11K。线下小班培训的课程有Python爬虫,Python后端开发,Python办公自动化,Python大数据分析,Python量化投资,Java中高级后端开发。授课详情请点击:http://chipscoco.com/?cate=6
12.4.1 什么是线程?
在12.3节介绍进程的概念时,讲到进程是操作系统进行资源分配的基本单位。读者可以把操作系统理解为一个容器,进程运行在操作系统这个容器里面,并占用着各种系统资源:CPU,内存,磁盘等。而线程是运行在进程内部的执行实体,一个线程对应一个单一顺序的控制流,从这一个角度来看,进程是线程的容器。
操作系统是进程的容器,进程是线程的容器。在支持多线程的操作系统中,线程是系统进行任务调度和任务执行的基本单位。
进程是资源分配的基本单位,而线程是任务调度和任务执行的基本单位。线程的执行也是由操作系统进行调度的,系统会根据特定的调度策略,将线程分配给某个CPU核心。
12.4.2 线程的资源占用
线程运行在进程这个容器里面,共享着进程内部的资源,这表现为:所有线程共享进程的虚拟地址空间,全局变量,打开的文件等。
读者需注意,进程是资源分配的基本单位,而线程是进程内部的执行实体。
线程中的实体基本不占用系统资源,系统在创建线程时,只需分配少量的系统资源,保证线程能独立运行即可。
12.4.4 线程间的通信
由于所有线程都运行在进程这个容器里面,所以线程间的通信还是很简单的,直接通过进程内部的全局变量就可以实现线程间的通信。进程之间就无法通过全局变量来实现通信,因为每个进程分配的都是独立的虚拟地址空间。
12.4.5 线程间的同步
线程间的同步与进程间的同步是一样的概念,同样需要借助系统提供的同步机制,比如互斥锁,信号量,条件变量等来保证在对共享资源的安全访问。
通过同步机制来保证各个线程都可以正常且正确的执行,并且不会出现数据的不一致情况,这就是线程安全的概念。关于线程安全,会在Java的多线程编程中进一步讲解。
12.4.6 进程与线程
使用进程或线程都可以进行并发程序设计,读者在实际使用时, 需注意二者的区别,以决定采用何种并发编程模型。
在讲解Java的多进程与多线程编程时,会详细讲解与进程、线程相关的并发编程模型。
以下为进程和线程的主要区别:
(1) 系统中的每一个进程都会分配虚拟地址空间。线程运行在进程内部,所有线程共享进程的虚拟地址空间。
(2) 进程是操作系统进行资源分配和调度的基本单位。线程是在进程内部的任务调度和执行的基本单位
(3) 进程占用较多的系统资源,进程间的切换需要较大的开销。线程只占用少量的系统资源,是一种很轻量的执行实体,切换速度很快。
线程占用的系统资源较少,远比进程轻量,在实际开发中,通常使用多线程来进行高并发的程序设计。
12.3.8 最具实力的小班培训
来这里参加Python和Java小班培训的学员大部分都找到了很好的工作,平均月薪有11K,学得好的同学,拿到的会更高。由于是小班教学,所以薯条老师有精力把每位学员都教好。打算参加线下小班培训的同学,必须遵守薯条老师的学习安排,认真做作业和项目。把知识学好,学扎实,那么找到一份高薪的工作就是很简单的一件事。
(1) Python后端工程师高薪就业班,月薪11K-18K,免费领取课程大纲
(2) Python爬虫工程师高薪就业班,年薪十五万,免费领取课程大纲
(3) Java后端开发工程师高薪就业班,月薪11K-20K, 免费领取课程大纲
(4) Python大数据分析,量化投资就业班,月薪12K-25K,免费领取课程大纲
扫码免费领取学习资料:
- 12.3节: 进程的基础概念
- 已经是最后一篇了