第116章 要不这就算我的检查吧(数据再掉就恢复两更。)
员全程跟着。
客人点菜、吃饭、买单,服务员都得等着。
客人多了,服务员就不够用了。”
他在旁边画了另一个图。
“我们可以换个思路。
只留一个前台接待员。
所有客人的请求先到前台登记。
前台把请求分类,扔到后面的队列里。
厨房做好了,再通知前台叫号。
这就是io多路复用。”
陈浩写下几个英文单词:iultiplexing。
“利用unix系统底层的select或者poll机制,一个线程就可以监控成千上万个socket连接的状态。
只有当socket真的有数据可读写时,才分配资源去处理。”
陈浩转过身,看着胡鹏:
“还需要把这块的同步锁去掉,换成无锁队列。”
实验室里没人回应,博士生们有的皱眉沉思,有的还在发懵。
在2000年,nio(非阻塞i/o)和reactor模式在学术界已经有了雏形,但在国内的工程实践中,还属于非常前沿甚至激进的技术。
大部分人还在死磕多线程优化。
胡鹏的眼睛却亮了。
他是行家。
陈浩画的这个图,虽然简单,但逻辑闭环非常完美。
它从根本上避开了线程切换的开销。
“无锁队列……”
胡鹏喃喃自语。
“你是说用cas指令原子操作来替代互斥锁?”
陈浩点头。
“是的。硬件级的原子操作,比操作系统级的锁快几个数量级。”
胡鹏沉默了片刻。
他看着陈浩,眼神复杂。
“说起来容易,做起来难。”胡鹏指着屏幕。
“这套系统的底层代码有十几万行,重构i/o模型等于