Александр Свиридов
Мудрец
(10703)
12 лет назад
>> При выполнении синхронной операции выполнение вызвавшей ее программы останавливается до завершения этой операции
Ответ правильный, но слабо характеризующий суть происходящего. В обоих случаях программа может приостанавливаться до завершения операции.
Обычно все операторы и процедуры программы выполняются последовательно и в одном потоке. Вся программа синхронизирована и проблемы межпоточного взаимодействия не существует. При асинхронном вызове часть кода отрабатывает в параллельном потоке, а затем возвращает результат выполнения.
Где применяют асинхронное программирование - например при обработке TCP сообщений. При большом кол-ве подключений и синхронном программировании пришлось бы создать много потоков на обработку даже простаивающих соединений. Асинхронный способ позволяет создавать поток только когда пришли данные. Тем самым снижает нагрузку на сервер.
Chaz AshleyМыслитель (8421)
12 лет назад
а у меня такой вопрос. сервер ведь в одну единицу времени может выполнять 1 операцию. чтения или записи в сокет или нет? Че делается с сокетами когда, например, я асинхронно отправляю сообщение, и в этот же момент мне нужно принять сообщение, сервер ждет конца отправки сообщения и только тогда принимает сообщение, или же отправка и принятие идет независимо друг от друга?