Spec-Zone.ru › Kotlin 2

MainThreadFinalizerProcessor

kotlin-stdlib/kotlin.native.runtime/GC/MainThreadFinalizerProcessor

Начиная с Kotlin: 1.9

object MainThreadFinalizerProcessor

Этот объект позволяет настраивать поведение обработчика финализаторов, работающего в главном потоке.

На платформах Apple Kotlin/Native освобождает объекты ObjC/Swift, переданные в Kotlin, при обработке финализаторов после сборки мусора. Kotlin/Native также может использовать главный цикл обработки событий для освобождения объектов, переданных в Kotlin в главном потоке. Это поведение можно отключить, установив бинарную опцию objcDisposeOnMain в значение false. Подробнее см. в разделе Интеграция с iOS.

Этот обработчик финализаторов работает следующим образом:

  • Финализаторы, которые должны выполняться в главном потоке, планируются сборщиком мусора после завершения основной фазы сборки мусора

  • В главный цикл обработки событий будет добавлена задача, в которой начнётся обработка запланированных финализаторов

  • Финализаторы будут обрабатываться внутри autoreleasepool пакетами размером batchSize

  • Если во время выполнения задачи обработчик обнаружит, что прошло больше времени, чем maxTimeInTask, он остановится и добавит в главный поток ещё одну задачу, чтобы продолжить обработку финализаторов позже. Обратите внимание: если выполнение какого-либо финализатора занимает очень много времени, задача всё равно обработает весь пакет размером batchSize, и время может значительно превысить maxTimeInTask

  • Гарантируется, что интервал между задачами составляет не менее minTimeBetweenTasks.

maxTimeInTask и minTimeBetweenTasks позволяют обрабатывать другие задачи, добавленные в главный поток (например, события пользовательского интерфейса), без существенных задержек.

Свойства

available

Начиная с Kotlin: 1.9

val available: Boolean

true будет ли Kotlin/Native использовать MainThreadFinalizerProcessor для обработки финализаторов.

batchSize

Начиная с Kotlin: 1.9

var batchSize: ULong

Сколько финализаторов будет обработано внутри одной autoreleasepool.

maxTimeInTask

Начиная с Kotlin: 1.9

var maxTimeInTask: Duration

Сколько времени может выполняться каждая задача.

minTimeBetweenTasks

Начиная с Kotlin: 1.9

var minTimeBetweenTasks: Duration

Минимальный интервал между двумя задачами.

© 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.runtime/-g-c/-main-thread-finalizer-processor/index.html

Spec-Zone.ru

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