Документация Kotlin часто говорит «неблокирующая» для приостановки функций, чтобы дать понять, что они не блокируют текущий поток, а просто приостанавливают текущую сопрограмму.
Так что да, delay
- этоприостановка и неблокирование.
Иногда это может вводить в заблуждение, потому что «неблокирование» делает акцент на том факте, что ничто не блокируется, в то же время должно быть ясно, что функции приостановки действительно приостанавливают текущую сопрограмму (поэтому, по крайней мере, что-то в некотором роде блокируется, даже если сам поток продолжает).
Тот факт, что они приостанавливают текущую сопрограмму, делает эти функции синхронными с точки зрения текущегосопрограмма, потому что сопрограмма должна ждать завершения этих функций, прежде чем выполнять остальную часть кода.Однако на самом деле они не блокируют текущий поток, потому что их реализация использует асинхронные механизмы под прикрытием.