一个程序员出门,发现下雨了,赶紧撑开雨伞。
同事问:"你这雨伞什么型号的?"
程序员:"这是阻塞式雨伞(Blocking Umbrella)。"
同事:"啥意思?"
程序员:"你看,雨点打下来,伞面直接同步阻塞了所有 I/O,一滴水都漏不进来。但缺点是我得一直举着它,线程被占用了,啥别的活都干不了。"
同事:"那你怎么不买把异步非阻塞的?"
程序员眼睛一亮:"有这好东西?"
同事:"有啊,雨衣。"
程序员沉默三秒:"……那不就是轮询(polling)吗?雨点来了我身上每个部位自己判断一下湿没湿,CPU 占用率多高啊!"
这时一阵狂风把雨伞吹翻了。
程序员看着翻过去的伞,叹了口气:"算了,还是中断驱动靠谱——雨一停,风一来,直接触发SIGTERM,我当场就把伞close()了。"
同事:"那你现在伞翻了,属于什么状态?"
程序员:"段错误(Segmentation Fault),伞骨越界了。"