00:00
那么我们讲了这些携程呢,还有主先生,但是没有看一个案例呢,心里面总是不舒服,我们来一个快速入门,讲完快速入门再往里面追啊,所以这个这个内容很多的,你看这个幻灯片37章对吧,现在讲到第七章,所以说咱们不着急这个着急了你也你也你也心急吃不了热豆腐,我们现在一个快速入门吧,大家体验一下,说有这么一个案例,请编写一个程序,完成如下功能,在主线程中,也就是说可以理解成那个进程啊,开启一个携程,隔开携程,每隔一秒钟输出hello word。在主线程中也每隔一秒钟输出,哈刚哈哈勾拉,这里面就涉及到一个概念了,就说我们这个斜程和主线程他们到底是怎么执行的,他们他们这个运行的机制是什么,其实这边也是很重要的,就说我在起个携程的时候,我会不会主塞在这里,我的主线程会不会阻塞?啊啊,如果阻塞的话,那肯定没有意义了,他肯定不会阻啊,不会阻塞好,然后呢,我们会看这个效果让他家体验啊,输出实次后退出程序,就是它每隔一秒钟输出输出hello go,然后输持势就退出,然后呢要求主线程和这个携程同时执行。
01:16
啊,然后呢,画出主线程和斜程的执行流程图来,各位同学我们先来写一下啊,写一下流程图呢,待会我给大家看一下就行了,来走一个GR的一个快速入门案例,跟上思路。跟上思路,好,各位朋友给他了一个标题二,对不对,那刚才呢,老师呃说了这个案例,我把这个案例的要求给各位朋友翻过来,我们要做的事情呢,是这么三点啊,四四点。第一个呢,呃,这个是一个要编一个程序。我要实现这么四四件事情。对。好,第一件,第二件,第三件。最重要的呢,应该是第四一个啊,我可能是这个地方会做一个说明。
02:03
好朋友们,大家不废话,我们直接代码实现。代码实现啊,代码实现。给代码实现来,给它来一个函数,直接写代码,打开我们的这一个v code,那新建一个章节,新建一个章节来,我们叫什么呢?Chapter chapter1,我们是111几幺五是吧。116了,幺六好,来我们新建第一个小案例,叫做gro的啊,GR那个写GR,有时候我简写也可以样讲啊,GRGRGR。Root,有些人这样写也可以,它简写叫green,那么标准写法是green啊,这个这个都可以。嗯,最好是按我这个写法。好,然后呢,我们写个小案例,写个小案例好慢点够,我就不去见里面那个文件夹了,直接被点够。
03:01
啊,写错了,可能是。写成一个文件夹了,可能。好,重新建个文件,May。没点够玩一把。Package主包包啊,Import,一个format包包。好,我们的案例的要求刚才同学们已经非常的清晰了,就是我要做的事情呢,就这么三件事。好,就这么三件事,粘贴过来,然后做一个注释。写上我们的主函数fun走来玩一把,那么首先呢,他说开启一个携程,那一般来说这个携程怎么开启呢?一般来讲是以这个函数为单位来开启的,所以说我先写个函数。编写一个函数,该函数干什么呢?每隔一秒钟输出hello word。没问题,这个对式太easy了,对吧,放我就写一个test吧,Test没问题,那开写了哈,For循环,你不要输十次吗?那就I等于。
04:04
1I小于十,约就十次,我就写十了,I加加。叫好的各位朋友,我在这里输出一句话,P,让我写一个hello。Hello word再给拼一个吧,再给他拼一个,就是把这个I也打印出来,这个I呢,咱们这个地方要这样拼。加一下啊加把一个整数,把一个整数转成转成字符串是用哪个方法呀。是I吗?I two。把大写I,大写的I,然后I toa,好把这个把这个写进去应该就可以了,当然我这时候可能要一个包包来一个包。好,这个是十寸cover。好,那么这个时候还要休眠一下,因为他说的是每隔一秒嘛,你别整的太快了,太快看不到效果,就time.sleep这个以前我们学过,就休眠,休眠的时候不能写一个一啊,我们得用它的一个那个时间单位啊,它的一个常量做碳点。
05:12
Second。那就一秒就这样写就是就就行了。Sed写完了,每隔一秒,好,写完了过后同学们看人家说了啊,在主线程中每隔一秒也干这件事情,那这个代码很简单,主先生也这么干。那他说的内容是哈娜?哈,那这方我也写句话,叫这个在主线中,这个呢在test里面。它是里面。好,我要开始玩了啊,同学们看。同学们看,如果我这样玩,大家看啊,我先按照传统写法,如果我这样玩。同学们想一想。如果这样玩的话,是不是相当于说。
06:01
如果我这样玩的话。同学们是不是相。要小于等于十。啊,小于等于四,对,那少输了一次,小小于等于四。好,这边也写错了啊,各位同学。好看,没错,如果我这样写的话,同学们知道,如果我这样写它其实是在调T的时候,请问他是不是先要把T的整个执行完,才会执行主主函数里面的这个for循环,这大这个基本知识要要懂啊,也就说这是个主线程。那么他会怎么做,他先把T全部实施打完了后,再去打这个for循环,我们看如果按照这个流程是不是这样写的,CD点点2CD到我们的刚才写的chapter。Chapter啊,还,还上一句CD到CHAPTER16。幺六,然后CD到我们刚才写的green test go run me,请看效果,对们看这样子它很它很笨的,它就是按照顺序来走,但是他想这样子其实很不划算,因为我们想他同时执行嘛。
07:13
我们需要发挥这个功能,你看他傻乎乎的,他就先把那个T全部做完,我才去做这个门,即使你,即使这两个任务本身是独立的,本身是独立的,你也会按顺序执行。但实际上我们在工作中往往是你这方执行和这方执行是需要并行的,比如说我们要计算一个结果,你可以执执去执行一个任务,我也可以执行一个任务,但是你看在默认的情况下,是先干完第一件事,再干第二件事情,那CPU其实在一科生不行,那怎么办呢?诶,如果我这样做,同学看我就改一点点啊够就一句话搞定了。这个非常简洁,就一句话,这就这就像开启了一个携程,那么同学们当我就做了一个很简单的一句话叫go,开始的时候,你们再来体验一下它的用法发生变化,可以看到它输出是穿插的。
08:08
什么意思,就是说他其实两个任务同时在做,你看。大家都做完了,给我退出来。因为你刚好都大家都是一秒嘛,如果说如果说时间,我让这个休息的更长一点,可能另外一个干的更快,你看这个结果是其实相当于说主函数和我们T里面都在同时执行,那相当于说我在进行一个够的时候,你可以这样理解。那个图怎么理解呢?主干线往下走。走的时候走,走到这个地方的时候,啪伸出一根支线在那面玩。那时候大家都在一起做自己的事情,诶这样子的话,效率就大大的提升,好,这就叫开启一个学生,我把这个把这个代码给各位同学先放到这儿啊。非常的简单,然后示意图我再画一下就完事了,示意图我这有了,我就直接给同学们看一把就行了,各位同学。好,同学们先看到此时此刻,一个非常简单的案例就出来了,它执行的效果。
09:05
执行的输出的啊,输出的这个效果是。这样子的。怎么样穿插的?从这地方我们可以看出,它是同时在执行。啊,从这地方我们看出来是同时执行。啊,说明输出效果,说明了他们是在同时执行,说明什么呢?我们的主线程。就是我们的这个主me me不在主线什么这个主线程。主线程和我们这个太子这个邪程啊,我取名就叫太子,因为我好区分啊,将来我们取得多个呢,哎,携程就可以多个go携程同时执行。啊,同时执行好这个效果看出来了,最后画一个示意图。我们来看一下示意图,主线程和斜程执行的示意图,这个很重要,这个图呢我就已经给大家准备好了。我已经准备好了。我把它搂一眼。
10:00
同学们看一下他们执行的这一个流程图是怎么样子的呢?打开它。然后同学们请看,这是我们画好的。啊。同学们看,程序开始玩了。那程序一旦开始,我们就认为一个进程或者一个一个主线程开始执行了,往下走,走的时候突然发现有一个go test,注意当他发现一个go test的时候,那么这个时候他马上会开启一个新的一个分支,让它在这里执行。但是主线程并没有阻塞在这里,它会继续往下走,它执行到这里的时候发现,诶我有负循环,那就它才开始执行它的负循环,等到什么时候执行呢?等到我这个主线程执行完毕就退出去。大家可能有很多疑惑了,哦,老师,我有几个疑惑,第一个,第一个疑惑是。到底谁执行完了算退出呢?这有很多细节了,很多很多细节啊,你们脑海里面应该有很多问号,如果是我学到这,我肯定要有很多问号。第一个。你这儿执行完了。
11:00
但是他还在执行。退不退出第二种情况下,你这还没有自循环,我这自循环了怎么办?好,这就是我们下午的下午要具体讲的细节,但是大体的这个流程大家要知道,其实重点就是要体现出这一点啊,体现出你们是开始分支了,你做你的事,我做我的事,至于他们之间怎么样去,比如说通讯。一个问题,至于是谁退出为准,这就是问题,因为他们之间可能有个通讯机制,好,这个是下午我们要具体讲的啊,再看这里,注意听这句话,我要下一个结论。如果主先生退出了。则携程即使还没有执行完毕,也会退出。比如说我祖先成输出了十个,但是你携程要输100个。我主先生先执行完毕,主先生一旦执行完毕,好,你这个携程也被干掉了,说老师我还没执行完呢,不管。我祖先生都死了,你还能活着,就好像有一个人是吧,所以说这个这个这一个人说,哎,我我们这个一个主体都消失了一个,比如说一个学校,这个学校都没有了,学生肯定那也没地方去了,就这么简单啊,第二点当然携程也可以在主这个写错了啊,在主线程还没有退出钱就结束自己,比如完成这些任务,比如说主线程是输出100次。
12:23
而你是输出十次,那谁先完成了,他先完成,他先完成就完成我主线程,不会说你这完成了我就退出了,不行,那么一定是以主线程为准,所以大家可以看到结论是以主线程的推出为准。好,这个示意图我先说到这啊,同学们,我先把这个示意图给大家拿到这里来。好的,各位朋友。好的,我先说到这里,那关于我们一个快速入门呢,先给各位介绍到这里。
我来说两句