selector获取到当前有事件的channel,如果新建一个线程执行IO操作,(以可读事件为例)则下次select仍然会返回之前发生可读事件的channel,所以异步线程执行channel时,需要调用key.canel将此channel移除,之后操作完再register。我的疑问是,内核怎么知道channel的可读事件是否已经被处理完的?
https://blog.csdn.net/suifeng629/article/details/85266016