三大通识知识:进程,线程,网络(三)

三大通识知识(一) :进程,线程,网络之间的关系
三大通识知识(二):进程实现原理
三大通识知识(三):线程实现原理
三大通识知识(四):网络
添三大通识知识(五):TCP服务器
进程,线程,网络视频连接

前言

上一节课,我们介绍了进程的代码实现原理,讲到了子进程是如何产生的,进程的空间为什么是独立的,进程为什么可以裂变…,现在我们要过渡到线程了,我们在第一篇博客《三大通识知识:进程,线程,网络(一)》中讲到,因为进程太占用资源,所有发明了线程,解决了进程的缺陷,有人就有疑问了,那为什么要进程呢,进程没有优点吗?

进程存在的意义

操作系统是通过进程来管理所有程序的,其实我们任何一个程序,在电脑上运行起来后,至少有一个进程,很多时候你不知道而已,因为你没有去关注它,也因为你用不上这些东西,就像你从生下来,这个世界就在这里了,你不用去问我从哪里来,要去哪里。(娘肚子里来,去坟墓里——狭义相对论,😀)。
其实,线程也是这样,你不能独立存在,必须是在进程之上!
所以说,进程的意义是什么?如果说操作系统是这个世界的话,那么进程是你的家!
好了,就这么理解吧,我觉得很好!

线程是如何让两个while 1运行的

我们在第一篇博客中,讲线程与进程的关系的时候,大家看到过这个图,也许很多人没有理解,因为没有实例代码,还是很抽象,但是我在讲关系的时候,必须这样讲,大体关系理清楚后,我们在看细节——代码级别的实现原理。
在这里插入图片描述
进程如何让两个while 1同时运行,在《三大通识知识:进程,线程,网络(二)》我已经分析清楚了,我对自己的分析还是很满意的,否则我不会写出来。
那线程是如何让两个while 1同时运行的呢?我们直接看代码实例!
在这里插入图片描述
上面的程序,主线程(main所在线程)有一个while 1,负责打印点,子线程(thread_fun)中也有一个while 1,负责打印星号。
从有图的运行结果中,我们也确实看到在屏幕上在交替打印,说明两个while 1在同时运行了。
这其中的关键函数就是pthread_create了,是它创建了子线程thread_fun,其实子线程就是一个函数。
我们这里,先不讨论pthread_create函数具体细节,我们来看如何创建多个线程呢?
比如,我要实现创建三个线程,线程一负责打印字符"a",线程二负责打印字符“b”,线程三负责打印字符“c”,这样一个功能如何实现呢?
请看大屏幕😁
在这里插入图片描述
就这么简单,我们在主线程里面通过pthread_create创建三个子线程,pthread_create函数执行完成,子线程就开始运行了,我们看到左边的运行结果,一共有四个线程(加上主线程)分别在屏幕上打印点abc。
神奇的是,如果几个线程所做事情相同,那么可以共用一个函数,我们改进一下代码:
在这里插入图片描述
我们在使用pthread_create函数创建子线程的时候,创建第一个线程传进去的参数是字符“a”,创建第二个线程,传进去的是字符“b”,创建第三个线程的时候,传进去的是字符“c”。这里,有一个直到思考的问题是,三个线程共用一个函数thread_fun,但这里要理解,这是三个线程,他们共享同一份代码,但是执行的参数不一样,你可以想象有三条线在执行。右边,可以看到四个程序在交替执行。
这里面涉及到指针的理解,这也许是很多初学者最难以理解的地方,想进一步学生的同学可以看我的视频
https://edu.csdn.net/course/play/9949/211713?spm=1002.2001.3001.4143(非免费)

线程的意义

线程最大的作用是可以协同完成一件事情,我们上面三个线程,只是做一个简单的打印动作,其实你可以想象做任何其他复杂的事情,而我们要做的就是如何让这些线程不乱跑,在我们的控制之下,比如永远让他们按照abc,abc,abc进行,而不是我们现在看到的,有时候是cba,有时候是bca。
好了,线程真正的意义体现在网络服务器中,等到下一篇再研究吧!

END

希望本文对您有帮助,如果有用就收藏吧!当然欢迎你购买我的视频进一步学习!
三大通识知识:进程,线程,网络(一)
三大通识知识:进程,线程,网络(二)
三大通识知识:进程,线程,网络(三)
三大通识知识:进程,线程,网络(四)
三大通识知识:进程,线程,网络(五)
想通过视频学习,轻点下面链接
进程,线程,网络视频连接

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

下家山

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值