В ВУЗе нам поверхностно освещали вопрос асинхронной обработки данных (это были 1990-е годы с MS-DOS). Упоминались в этом контексте в основном - неблокирующие сокеты. На практике я сталкивался с блокировками ресурсов (C+pthread+mutex), про асинхронность мало знаю.
У меня четыре основных вопроса.
Первый. Асинхронность «в чистом виде» где-нибудь бывает? Я имею ввиду «асинхронный прием сообщений». Ведь принимает их какой-то конкретный узел. Под асинхронностью здесь понимается принципиальная возможность мультиплексирования глобального ресурса (процессора, канала связи) при попадании в очередь нескольких запросов на один «такт» обработки? То есть, асинхронность и «возможность распараллеливания» дальнейшей обработки - это здесь синонимы? [распараллеливание парсинга, перекладывании из очереди в очередь, вычислений]
Второй вопрос. Что бывает «неблокирующего» - кроме приёма сообщений? И, аналогично, «асинхронного». Можете привести примеры из повседневной жизни (см. четвертый вопрос)?
Третий вопрос. «Синхронная обработка» - это синоним «FIFO»?
Четвертое. Приведите, пожалуйста, практический пример для каждого варианта.
1. Блокирующий приём, синхронная обработка.
2. Блокирующий приём, асинхронная обработка.
3. Неблокирующий приём, синхронная обработка.
4. Неблокирующий приём, асинхронная обработка (например, в какой-нибудь конторе - выписали квиток что «ваше заявление принято», по мере возможности обработали запрос, и когда обработка завершилась - отправили уведомление).