execute
Требования к платформе и версии: Native (1.3)
fun <T1, T2> execute( mode: TransferMode, producer: () -> T1, job: (T1) -> T2 ): Future<T2>
Планирует задачу для дальнейшего выполнения в рабочем процессе. Выполнение — это операция в две фазы:
- Функция producer выполняется в потоке вызывающей стороны.
- Результат функции producer и указатель на функцию job добавляются в очередь задач выбранного рабочего процесса. Обратите внимание, что функция job не должна сама захватывать состояние.
Параметр mode не оказывает влияния.
Поведение сложнее в случае с устаревленным менеджером памяти:
- Сначала выполняется функция producer, и полученный объект и все, на что он ссылается, анализируются на предмет изолированного подграфа объектов, если режим проверки включен.
- Затем этот отключенный граф объектов и указатель на функцию job добавляются в очередь задач выбранного рабочего процесса. Обратите внимание, что функция job не должна сама захватывать состояние, чтобы все состояние явно хранилось в объекте, произведённом функцией producer. Запланированная задача выполняется рабочим процессом, а результат такого выполнения отсоединяется от графа объектов рабочего процесса. Тот, кто будет потреблять будущий результат, может использовать результат вычислений рабочего процесса. Обратите внимание, что некоторые технически несвязанные подграфы могут привести к
kotlin.IllegalStateExceptionпоэтомуkotlin.native.runtime.GC.collect()может быть вызвано в концеproducerиjobесли существуют циклические структуры мусора или другие несобранные объекты, ссылающиеся на передаваемое значение.
Возвращает будущий результат с результатом вычисления функции job.
© 2010–2023 JetBrains s.r.o. and Kotlin Programming Language contributors
Licensed under the Apache License, Version 2.0.
https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.native.concurrent/-worker/execute.html