Синхронность/асинхронность.

Разница в этих двух режимах следующая.

Синхронная работа: когда вы вызываете функцию, то программа останавли­вается и ждет полного ее выполнения. Допустим, что вы запросили соеди­нение с сервером. Программа будет ждать, пока не произойдет реальное со­единение или ошибка.

Асинхронная работа: в этом режиме программа не спотыкается о каждую сетевую функцию. Допустим, что вы сделали все тот же запрос на соедине­ние с сервером. Ваша программа посылает запрос на соединение и тут же продолжает выполнять следующие действия, не дожидаясь физического контакта с сервером. Это очень удобно (но тяжело в программировании), потому что можно использовать время ожидания контакта в своих целях. Единственное, что вы не можете делать — вызывать сетевые функции, пока не произойдет реального физического соединения. Недостаток в том, что самому программисту приходится следить за тем, когда закончится выпол­нение функции и можно будет дальше работать с сетью.