Иван Сагалаев (
softwaremaniacs.org) -- написал в своём журнале -- интересную цытату, касающуюся терминологии :-) :
********** НАЧАЛО
[*] **********
Ещё один термин, которому не повезло - асинхронность. По-настоящему она означает вызов функции, которая не делает всей своей работы сразу, а быстро возвращает управление в вызвавшую программу, выполняя свои вычисления параллельно с ней. Никакого конкретного способа реализации такого параллелизма не предполагается.
Однако часто "асинхронность" неявно жёстко привязывают конкретно к асинхронному вводу-выводу, когда асинхронность вызова обеспечивается тем, что долгую и тупую часть операции по перекладке байтов на себя берёт отдельный сервис ядра. Чтобы отличать это понятие от "асинхронности вообще", я буду пользоваться тремином неблокирующий IO.
********** КОНЕЦ **********
интересно это, потомучто в свете умножающийся многоядерности процессоров (да и вообще всего :), где есть ядра :D) -- асинхронность начинает всё больше приобритать важные смыслы! :-)
....говоря об алгоритмах использующщих асинхронные функции (т.е. неблокирующие функции) -- мы ведь НЕ должны обязательно предпологать что: "вся программа будет работать в единственной ните, а функционал неблокирующих функций будет релизован через API операционной системы [как например обработка асинхронных событий через: glib.MainLoop
[*] ]" :-)
если через {множество нитей (threading) } или через {множество процессов (multiprocessing) } -- реализуются неблокирующие функции -- то это ведь тоже асинхронность ! чем эта асинхронность -- не асинхронней, других асинхронностей :-) :-D ?
......и её (ассинхроность реализованную через threading и/или multiprocessing ) -- думаю не так уж и плохо использовать в сочетании (а не в эксклюзивности) по отношению с обыкновенными рутинными асинхронным функциями ввода-вывода операционной системы!
тоесть асинхронность -- это всеголишь ИНТЕРФЕЙС, а не РЕАЛИЗАЦИЯ! :-)
# p.s.: написал этот журнальный файл, в размышлениях о том что иногда возникает такое ошибочное ощущение, что программа либо должна использовать множество нитей и не использовать асинхронные функции (использовать синхронные), либо должна использовать асинхронные функции но быть реализована в одной ните ... %) %) :-)
# p.p.s. в абривиатуре AJAX -- ведь тоже есть слово Asynchronous :-)