Worker
Начиная с Kotlin: 1.3
value class Worker
Класс, представляющий воркер.
Worker представляет собой поток выполнения и очередь задач, отправленных этому воркеру. После запуска воркер обрабатывает собственную очередь, пока его явно не завершат.
API воркера напоминает API исполнителей и потоков:
Это ресурс, который необходимо закрыть.
Если не запросить завершение и не дождаться его, произойдёт утечка нативной памяти.
Воркер нельзя завершить извне во время обработки очереди задач — это приведёт к аварийному завершению.
Воркер можно приостановить, но во время приостановки он может обрабатывать собственную очередь задач.
Чтобы возобновить работу воркера, ему нужно отправить любую задачу.
Задачи можно отправлять воркеру как обычные задачи Runnable, так и отложенные (с задержкой) задачи Runnable.
Механизма отмены отложенных задач Runnable нет.
Попытка вызвать любой метод завершаемого воркера приводит к исключению времени выполнения.
К таким вызовам относится даже безобидный Worker.current из текущего воркера.
Свойства
Начиная с Kotlin: 1.3
val name: String
Имя воркера, заданное в Worker.start, или "worker $id" по умолчанию.
Начиная с Kotlin: 1.3
val platformThreadId: ULong
Получить идентификатор системного потока потока воркера.
Функции
Начиная с Kotlin: 1.3
funasCPointer(): COpaquePointer?
Преобразовать воркер в значение COpaquePointer, которое можно передать через нативный указатель void*. Его можно использовать в качестве аргумента Worker.fromCPointer.
Начиная с Kotlin: 1.3
fun executeAfter(afterMicroseconds: Long = 0, operation: () -> Unit)
Запланировать выполнение задачи в воркере.
Начиная с Kotlin: 1.3
fun park(timeoutMicroseconds: Long, process: Boolean = false): Boolean
Приостановить выполнение текущего воркера до поступления нового запроса или истечения времени ожидания, указанного в timeoutMicroseconds. Если параметр process равен true, обрабатываются элементы очереди, включая отложенные запросы. Обратите внимание: таким способом может быть обработано несколько запросов.
Начиная с Kotlin: 1.3
fun processQueue(): Boolean
Обработать ожидающие задачи в очереди этого воркера. Обратите внимание: задачи, запланированные с помощью executeAfter с ненулевой задержкой, таким способом не обрабатываются. Если во время обработки очереди через этот API поступит запрос на завершение, воркер будет помечен как завершённый и остановится после выполнения текущего запроса.
Начиная с Kotlin: 1.3
fun requestTermination(processScheduledJobs: Boolean = true): Future<Unit>
Запросить завершение воркера.
© 2010–2026 JetBrains s.r.o. and Kotlin Programming Language contributors
Licensed under the Apache License, Version 2.0.
https://kotlinlang.org/api/core/kotlin-stdlib/kotlin.native.concurrent/-worker/index.html