Это по сути ортогональные понятия.
" управляемый событиями " по сути означает, что код, связанный с определенными вызовами функций, связывается во время выполнения (и может изменяться в процессе выполнения).
Кто «запускает» событие, не знает, что его обработает, и кто обрабатывает событие, определено так, чтобы реагировать на событие через ассоциацию, определенную во время выполнения программы. Обычно это указатели на функции, ссылки или указатели на объекты, переносящие виртуальные методы и т. Д.)
" asynchronous " означает, что потоку программы не нужно ждать выполнения вызова перед продолжением (в основном это выполняется с помощью вызова, который возвращается сразу после делегирования выполнения другому потоку или процессу). )
Не все события являются асинхронными (вспомните окна SendMessage
, относящиеся к PostMessage
), и не все асинхронные вызовы необходимы для реализации «событиями» (хотя использование механизма событий довольно распространено для реализации асинхронных вызовов)