Spec-Zone.ru › Kotlin 2

execute

kotlin-stdlib/kotlin.native.concurrent/Worker/execute

Начиная с Kotlin: 1.3

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

Запланировать задание для последующего выполнения в Worker. Execute — это операция из двух этапов:

  1. Функция producer выполняется в потоке вызывающего кода.

  2. Результат producer и указатель на функцию job добавляются в очередь заданий выбранного Worker. Обратите внимание, что job не должна захватывать состояние.

Параметр mode не влияет на поведение.

При использовании устаревшего менеджера памяти поведение сложнее:

  • Сначала выполняется функция producer, а полученный объект и все объекты, на которые он ссылается, проверяются на принадлежность к изолированному подграфу объектов, если включён режим проверки.

  • Затем этот отсоединённый граф объектов и указатель на функцию job добавляются в очередь заданий выбранного Worker. Обратите внимание, что job не должна захватывать состояние, поэтому всё состояние явно сохраняется в объекте, созданном функцией producer. Запланированное задание выполняется Worker, а результат выполнения отсоединяется от графа объектов Worker. Тот, кто получит future, сможет использовать результат вычислений Worker. Обратите внимание, что некоторые технически несвязанные подграфы могут привести к kotlin.IllegalStateException, поэтому kotlin.native.runtime.GC.collect() может быть вызван в конце producer и job, если циклические структуры с мусором или другие не собранные объекты ссылаются на передаваемое значение.

Возвращает

future с результатом выполнения job.

© 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/execute.html

Spec-Zone.ru

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