00:00
我们来看另外一个就是看谁了,看那个我们刚才叫什么方法,叫send message,从这里面找一下啊,我们找到了位置,是不是去找它呀,找他,我们看他到底怎么做的。看它吧,你这里面点不过去,因为它不是公开的方法,好,那我们要去找一个类是哪个类message。叫消息队列是吧,消息队列它里面应该有一个方法,叫这样一个方法,能看到吧,好,那现在呢,我们就来去分析,它叫message q,它是存储。消息的什么?一个叫什么对列以什么排序啊,以message的啊,问排序的那个时候叫什么呢?优先级队列,它是有优先级的啊。
01:13
好了,下面我们就要去看,首先呢,从这一句方法来看它。啊,这个地方这个方法用来干嘛。是不是添加message啊啊,将相当于将message添加到什么呢?队列中没问题吧,大家看到我这个队列里面有一个什么,有一些什么东西了,哎,我就看到这个方法吧,这个方法里面应该有啊,再来一下,不用再说A完了。找一下他走往下看啊,大家能看得见,你看它里面保存了一个什么属性。
02:00
是麦啊啊,他他这里面你能看到。这个地方在上面啊,还是得大家看一下这个,因为啊,它主要你看这。能看到吧,是不是实际上就是我的麦呀?诶,它为什么会取名为S。他麦是不是可以形成列表的,但是列表的话我不用保存,所有的话,我只搞只要抓住了第一个就够了,对不对啊,抓住第一个就抓住了所有的啊好,我们还是要来把那个方法把它找到,下面我们来看。啊,前面这些呢,可以不用看,这个呢,也不用看啊,我们要看一个什么,看这个。重要的东西我就大家看一下,这是什么因式。这个when是传过来的,说什么意思?Me when得问,这个when是刚才已经发送的时候计算出来的干嘛?来,我们来看一下这一个方法是做什么事,是不是指定消息被处理的时间呢?啊,指定啊,消息应该被处理的时间,但实际时间是不是有可能比这个晚呢?
03:19
是这个意思吧,嗯,好。来下面看它这里面附了一个临时限量的保单,这我操作这个P,实际上是不是操作这个对应,好你看这个地方通过分为if else。这是什么意思呢?我简单的跟大家先说,有可能开始是没有的吧。你说我这个容器要一个人,没有添加的方式和有添加的方式不太一样。我这里面一个人没有怎么办,是不是直接指向他是不是就可以对吗?直接指向他就可以。都没问题吧,下面这一个,你说他在干嘛?破循环咔咔的,这是什么破循环?
04:03
是不是一个,是不是相当于是一个无限或循环吗?最终他肯定有什么呀,是瑞套出来的,好,我拿着这一片代码大家看的啊,这是在做什么呀?但为什么能看呢?你看它意思,它在有next,有问小于P点,问这干嘛哟。排序。啊好假设啊,你看它他加那个消息,它有有一定的过程吧,先假设加第一个,这没什么好说的,就是麦吧,他现在next等于什么,如果开始就一个max等于什么,它会有一个属性叫NEX什么等于什么浪呗。好,下面它每一个Mac是不是有问呢?假设它的问是七啊,假设这个值是七,现在呢,我又创建了一个Mac,它的值是五。你说现在怎么办?啊,行吧。
05:02
是不是五的下面才指向什么,是不是七,而我的那个我的这一个值,这一个指针指向谁,是指向这个这个message呢,还是这个me。是五啊好了,那下面啊,我又有了一个Mac。这个M1呢,他是六。你说他该怎么做,他先他是怎么样插进去的,你在想最终的结果是什么?是五,我应该指向七啦,指向谁六,而六呢,指向七,这个时候就要存在一个比较的问题吧,那我之所以能插到五跟七之间,我是不是比较过来啊,我先肯定想到,诶能不能插到我的左边呢?能不能。不能对吧,那不能我就往下找,我能不能插到七的左边呢?可不可以可以,那我就会让我的X是不是等于什么七,让这个五的X等于几六,这是不是有一个比较的过程,得一直找,找到目标目标为止吧,能看懂吧,能看到好了,现在我一下子来了一个四。
06:13
这一上去就什么呀,是不是就找到了,好,如果我这么找的够吗?再写一下够不够。如果放了个四进去了怎么办?诶,这一个不能指向五了,得指向什么四。这个能看懂吧,啊,这个里面啊,这else里面在做的事情,就是在做这样一个事,找到一个合适的位置,把我的Mac给它插进去,最终的效果是什么?我的这个列表它是个有序的列表啊,是不是按问从小到大排列呀。对吧,啊,这是这样一个是大家需要去知道它啊。
07:01
听懂就行啊,其实待会呢,具体每一步你不用每一步都去研究,那没有那必要,你主要我们现在做的事情其实已经很深入了啊。这个地方呢,是做什么呢?呃在哎消息队列中,嗯,将当前消息对象吧,将当前消息对象保存到链表啊,消息队列的消息队列中的一个合适的什么是位置呀。最终的结果就是我的消息队列是什么?是不是有序的啊,注意。是,嗯消息,嗯,队列是按什么来排序了,问来什么排序的,后面我取的话,我是不是就轻松很多啊,嗯,好搞定这样一个事啊,啊来看它。
08:17
在这个里面呢,就有一个他。Need weak什么意思?什么意思?需要week唤醒什么概念,它这里面是不是就调用某一个方法去,这个方法是一个什么方法呢?是一个本地方法,这个本地方法是什么实现呢?它里面会去调用底层的C和C加加的一些代码。啊,这个相当于是不是我们的。对吧,诶有人说那为什么不用notify用它了。那是因为我们的等待,我们收了,如果查不找不到消息,是不是要处以等待啊,那个时候它不是用wait来做的啊,也就现在啊,看着这一句话,我把它拿过来给大家说一下诶。
09:11
东西了。找一下他啊。嗯,我说一下这句话啊。好了,这一句话是在做什么?啊通过啊本地方法,嗯,啊实现对呃,那个实际上它是实现对什么呢?对处于。嗯,休眠或者说处于等待状态的一个,你说它是线程吧,它也不对,因为这些语句都在哪个线程执行的呢,它是在主线程,并不是什么分线程啊,处于等待的一个一个一个一个什么呢的。
10:10
底层。或者说底层卸载板啊,在这个里面啊,后面我们要说为什么要为什么要notify啊,要要通知就week啊,因为有可能我在发送的时候,那个路是不是已经停下来了。他停是完全停止吗?不是,也就是说,我们的怒火是用来去取消息的,它又取不到,得怎么做?是不是属于等待啊,那这个等待呢,能不能用,为什呢,我告诉大家完全不能。假设它可以,它这个位置我们说过了,我们的,你说这个位置是在哪个线的位呀。在主线的味道,那在主线位置会出现什么效果。
11:05
是不是主塞主线成的啊,等会我们再去说,你就能很清楚的明白这句话的意思啊,先简单的说一下,嗯,好了,这样呢,我们就简单的说一下它啊。OK。嗯,先停下来啊。
我来说两句