Spec-Zone.ru › Kotlin 2

Worker

kotlin-stdlib/kotlin.native.concurrent/Worker

Начиная с Kotlin: 1.3

@ObsoleteWorkersApi
value class Worker

Класс, представляющий воркер.

Worker представляет собой поток выполнения и очередь задач, отправленных этому воркеру. После запуска воркер обрабатывает собственную очередь, пока его явно не завершат.

API воркера напоминает API исполнителей и потоков:

  • Это ресурс, который необходимо закрыть.

    • Если не запросить завершение и не дождаться его, произойдёт утечка нативной памяти.

    • Воркер нельзя завершить извне во время обработки очереди задач — это приведёт к аварийному завершению.

  • Воркер можно приостановить, но во время приостановки он может обрабатывать собственную очередь задач.

    • Чтобы возобновить работу воркера, ему нужно отправить любую задачу.

  • Задачи можно отправлять воркеру как обычные задачи Runnable, так и отложенные (с задержкой) задачи Runnable.

    • Механизма отмены отложенных задач Runnable нет.

  • Попытка вызвать любой метод завершаемого воркера приводит к исключению времени выполнения.

    • К таким вызовам относится даже безобидный Worker.current из текущего воркера.

Типы

Companion

Начиная с Kotlin: 1.3

object Companion

Свойства

id

Начиная с Kotlin: 1.3

val id: Int
name

Начиная с Kotlin: 1.3

val name: String

Имя воркера, заданное в Worker.start, или "worker $id" по умолчанию.

platformThreadId

Начиная с Kotlin: 1.3

@ExperimentalStdlibApi
val platformThreadId: ULong

Получить идентификатор системного потока потока воркера.

Функции

asCPointer

Начиная с Kotlin: 1.3

fun asCPointer(): COpaquePointer?

Преобразовать воркер в значение COpaquePointer, которое можно передать через нативный указатель void*. Его можно использовать в качестве аргумента Worker.fromCPointer.

execute

Начиная с Kotlin: 1.3

fun <T1, T2> execute(mode: TransferMode, producer: () -> T1, job: (T1) -> T2): Future<T2>

Запланировать выполнение задачи в воркере. Выполнение состоит из двух этапов:

executeAfter

Начиная с Kotlin: 1.3

fun executeAfter(afterMicroseconds: Long = 0, operation: () -> Unit)

Запланировать выполнение задачи в воркере.

park

Начиная с Kotlin: 1.3

@IgnorableReturnValue
fun park(timeoutMicroseconds: Long, process: Boolean = false): Boolean

Приостановить выполнение текущего воркера до поступления нового запроса или истечения времени ожидания, указанного в timeoutMicroseconds. Если параметр process равен true, обрабатываются элементы очереди, включая отложенные запросы. Обратите внимание: таким способом может быть обработано несколько запросов.

processQueue

Начиная с Kotlin: 1.3

@IgnorableReturnValue
fun processQueue(): Boolean

Обработать ожидающие задачи в очереди этого воркера. Обратите внимание: задачи, запланированные с помощью executeAfter с ненулевой задержкой, таким способом не обрабатываются. Если во время обработки очереди через этот API поступит запрос на завершение, воркер будет помечен как завершённый и остановится после выполнения текущего запроса.

requestTermination

Начиная с Kotlin: 1.3

fun requestTermination(processScheduledJobs: Boolean = true): Future<Unit>

Запросить завершение воркера.

toString

Начиная с Kotlin: 1.3

open override fun toString(): String

Строковое представление воркера.

© 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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API