Пример - так себе. Лучше на примере коммуникации. Предположим что вам дали шикарную, фирменную библиотеку, умеющую "коммуницировать" куда угодно, кучей разных способов.
Вам нужно только отправить запрос и .... получить результат.
Но вы - эмбеддер. И у вас нет вытесняющей мультизадачности.
Как вменяемо(!) вернуть результат, если в числе возможных способов коммуникации есть передать с поездом флешку очень медленные?
Один из вариантов, передавать в библиотеку ссылку на ВАШ код, который должен быть вызван, когда результат будет получен.
Пусть библиотека ПЕРЕЗВОНИТ.
Когда ты вызываешь функции библиотеки это, кагбэ, прямо. Сверху вниз.
А когда она твои - это наоборот. Снизу вверх.