если, например, ты пишешь в общую память "жду новых данных полученных через X, в количестве Y с пометкой готовности Z", а потом делаешь что-то другое, а когда понадобились данные, то читаешь в горячем цикле, записано ли со смещением Y+1 значение Z — это уже асинхронность, не смотря на то, что ты заблочил свой поток, полезную работу до этого времени независимо от исполнителя X ты выполнил асинхронно, он мог закончить работу раньше или позже тебя, а синхронизируетесь вы сейчас.