execute
Начиная с Kotlin: 1.3
fun <T1, T2> execute(mode: TransferMode, producer: () -> T1, job: (T1) -> T2): Future<T2>
Запланировать задание для последующего выполнения в Worker. Execute — это операция из двух этапов:
Функция producer выполняется в потоке вызывающего кода.
Результат 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