Недавно я пытался обернуть свой мозг вокруг асинхронного ввода-вывода, то есть epoll()
в Linux и kqueue()
в FreeBSD;вместо того, чтобы создавать несколько потоков и использовать что-то вроде select()
, вы можете создать только один поток и по-прежнему отвечать на многие события ввода-вывода одновременно.
Я пытался понять, как это работает на глубокомуровень в машинном коде, но попал в кирпичную стену. (Возможно, моего Google-Fu просто не хватает.) Я не могу найти никаких инструкций процессора, связанных с асинхронным вводом / выводом - так как это работает?