Процессы относятся к асинхронным, если скорости исполнения любой части процесса не взаимосвязаны друг с другом и с другими процессами. Другими словами, если есть два асинхронных процесса, и в каждом из них мы выделим определенную группу команд, нельзя сказать заранее, какой процесс выполнит "свою" выделенную группу раньше. Такая ситуация вызвана тем, что время работы асинхронного процесса нельзя точно определить так как он может содержать в себе задержки, время которых не поддается точной оценке. Например, если процесс выполняет обмен с асинхронным устройством, и устройство не готово, возникает задержка до готовности устройства, и длительность этой задержки заранее не известна.
Задача синхронизации асинхронных процессов возникает в следующих случаях: