Spec-Zone.ru › Kotlin 1.7

execute

kotlin-stdlib / kotlin.native.concurrent / Worker / execute
Требования к платформе и версии: Native (1.3)
fun <T1, T2> execute(
    mode: TransferMode, 
    producer: () -> T1, 
    job: (T1) -> T2
): Future<T2>

Планирует задание для дальнейшего выполнения в рабочем потоке. Выполнение — это операция в две фазы:

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

Параметр mode не оказывает влияния.

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

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

Возвращает будущее с результатом вычислений job.

© 2010–2022 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

Spec-Zone.ru

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