采纳答案成功!
向帮助你的同学说点啥吧!感谢那些助人为乐的人
老师好,我可以理解为网络有很多io请求发给上图中的thread(也就是redis的主线程),然后thread把io要操作的fd扔给selector去监听内核的fd是否可读、写,这时候thread先去忙别的,然后对应的fd可操作时候再返回给thread去处理这次io请求?还有就是selector是redis的主线程fork出来的子线程去做监听fd么?
同学好,select那个是有内核告诉应用程序有事件来了,然后select去循环所有的fd看哪个就绪了,select可以理解为程序里的一个子线程。
老师,图里还有些不明白,图中的Thread是指谁的线程(是程序的哪一部分还是操作系统的)?selector呢?channel是具体是指什么?
同学好,图里的Thread指的就是redis线程,redis是单线程,Selector是整个NIO Socket的核心实现,即多路复用器,是一个抽象类,不通的操作系统会返回它不同的实现类实例,Selector可以理解为监视器。而监视器主要就是监视注册在它里面的channel,channel就相当于一个个外部请求。一旦接收到完整的请求,它就会通知redis线程(进程)。
老师好,还有两点疑惑,1.select系统调用是指整个图是吧?2.还有就是fd也是selector监听么?(我的理解是selector不止监听channel还监听fd,当channel和对应需要操作fd都准备好了才发给thread操作?)
登录后可查看更多问答,登录/注册
招聘季即将到来,让百度资深面试官来为你的高薪Offer保驾护航
1.8k 27
2.7k 22
1.2k 15
1.4k 14
1.3k 14