НОВИНКА!
Занимательная математика от Трепачёва. Присоединяйтесь к нам!
1301 of 1310 menu

Ключевое слово yield

Ключевое слово yield используется внутри корутин для добровольной приостановки текущей корутины и предоставления возможности выполнения другим корутинам, работающим в том же диспетчере. Это позволяет реализовать кооперативную многозадачность.

Импорт

import kotlinx.coroutines.yield

Синтаксис

suspend fun yield(): Unit

Пример

Простое использование yield для приостановки корутины:

import kotlinx.coroutines.* fun main() = runBlocking { launch { for (i in 1..3) { println("Coroutine 1: $i") yield() } } launch { for (i in 1..3) { println("Coroutine 2: $i") yield() } } }

Результат выполнения кода:

Coroutine 1: 1 Coroutine 2: 1 Coroutine 1: 2 Coroutine 2: 2 Coroutine 1: 3 Coroutine 2: 3

Пример

Использование yield в цикле для обработки длительных операций:

import kotlinx.coroutines.* fun main() = runBlocking { val job = launch { for (i in 1..1000) { if (i % 100 == 0) { println("Processed $i items") yield() } } } job.join() }

Результат выполнения кода:

Processed 100 items Processed 200 items Processed 300 items Processed 400 items Processed 500 items Processed 600 items Processed 700 items Processed 800 items Processed 900 items Processed 1000 items

Пример

yield в комбинации с другими функциями приостановки:

import kotlinx.coroutines.* suspend fun processItem(item: Int) { println("Processing item $item") delay(100) yield() } fun main() = runBlocking { val items = listOf(1, 2, 3, 4, 5) items.forEach { item -> launch { processItem(item) } } }

Результат выполнения кода:

Processing item 1 Processing item 2 Processing item 3 Processing item 4 Processing item 5

Смотрите также

  • функцию launch,
    которая запускает новую корутину
  • функцию async,
    которая запускает корутину с возвратом результата
  • функцию delay,
    которая приостанавливает корутину на указанное время
  • модификатор suspend,
    который обозначает функции приостановки
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить