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