进击のpython
并发编程——线程理论
前面讲的是进程的相关理论部分
从本节开始,就是对线程的相关知识的研究了
本节对线程进行一个定义,知道什么是线程
以及横向对比进程,知晓两者的不同点
什么是线程
线程是执行程序的最小单位
举个例子:
老师让你读一本书,那么这个书可以看作是进程,而你读书的这个过程就是线程
线程就是用来执行程序的,那么就可以这么想
每开一个进程是不是就要执行该进程,而执行程序的最小单位是线程
所以每开一个进程,随之而来的就是自动开一个线程
进程将资源都聚合起来,然后给线程执行
多线程就是在一个进程里存在多个线程,多个线程共享这个进程里面的资源
就好像班级同学一起读投影仪上的文章一样,投影仪上的文章就是进程里面的资源
全班同学就是一个一个的线程,几乎同时来执行读书这个‘任务’
线程VS进程
线程和进程的区别,主要体现在以下这六个方面:
1.线程共享创建它的进程的地址空间;进程有自己的地址空间
2.线程可以直接访问其进程的数据段;进程有自己的父进程数据段副本
3.线程可以直接与其进程的其他线程通信;进程要使用进程间通信与兄弟进程通信
4.新线程很容易创建;新进程需要父进程的重复
5.线程可以对同一进程的线程进行相当大的控制;进程只能对子进程进行控制
6.对主线程的更改(取消、优先级更改等)可能会影响进程的其他线程的行为;
对父进程的更改不会影响子进程
其实总结起来,就两个关键:
1.线程共享进程的数据
2.创建线程开销远小于进程