Пакет kotlin.native.concurrent
Типы
AtomicInt
Значение типа Int, которое всегда обновляется атомарно. Дополнительные сведения об гарантиях атомарности для чтений и записей см. в kotlin.concurrent.Volatile.
class AtomicInt
AtomicLong
Значение типа Long, которое всегда обновляется атомарно. Дополнительные сведения об гарантиях атомарности для чтений и записей см. в kotlin.concurrent.Volatile.
class AtomicLong
AtomicNativePtr
Значение типа kotlinx.cinterop.NativePtr, которое всегда обновляется атомарно. Дополнительные сведения об гарантиях атомарности для чтений и записей см. в kotlin.concurrent.Volatile.
class AtomicNativePtr
AtomicReference
Ссылка на объект, которая всегда обновляется атомарно.
class AtomicReference<T>
Continuation0
class Continuation0 : () -> Unit
Continuation1
class Continuation1<T1> : (T1) -> Unit
Continuation2
class Continuation2<T1, T2> : (T1, T2) -> Unit
DetachedObjectGraph
Отделенный граф объектов encapsulates передаваемый отделенный подграф, к которому нельзя получить доступ извне, пока он не будет присоединен с помощью расширяющей функции attach.
class DetachedObjectGraph<T>
FreezableAtomicReference
Примечание: этот класс полезен только с устаревленным менеджером памяти. Используйте вместо него AtomicReference.
class FreezableAtomicReference<T>
FreezingException
Исключение, выбрасываемое всякий раз, когда заморозка невозможна.
class FreezingException : RuntimeException
Future
class Future<T>
FutureState
Состояние объекта future.
enum class FutureState
InvalidMutabilityException
Исключение, выбрасываемое всякий раз, когда мы пытаемся изменить замороженные объекты.
class InvalidMutabilityException : RuntimeException
MutableData
Изменяемый буфер данных, доступный для одновременного доступа. Может быть доступен нескольким работникам одновременно.
class MutableData
TransferMode
Примечание: современный менеджер памяти Kotlin/Native позволяет обмениваться объектами между потоками без дополнительных церемоний, поэтому TransferMode имеет эффект только в устаревшем менеджере памяти.
enum class TransferMode
Worker
class Worker
WorkerBoundReference
Общий доступ к ссылке на объект Kotlin, которая не замораживает ссылаемый объект, когда она сама замораживается.
class WorkerBoundReference<out T : Any>
Аннотации
ObsoleteWorkersApi
Помечает все API, относящиеся к Worker, как устаревшие.
annotation class ObsoleteWorkersApi
SharedImmutable
Примечание: эта аннотация действует только в Kotlin/Native с устаревшим менеджером памяти.
annotation class SharedImmutable
ThreadLocal
Помечает свойство верхнего уровня с базовым полем или объект как локальный для потока. Объект остается изменяемым и можно изменить его состояние, но каждый поток будет иметь отдельную копию этого объекта, поэтому изменения в одном потоке не отражаются в другом.
annotation class ThreadLocal
Свойства
isFrozen
Проверяет, является ли данный объект null или замороженным или постоянным (т. е. созданным во время компиляции).
val Any?.isFrozen: Boolean
Функции
atomicLazy
Атомарный ленивый инициализатор, может использоваться в замороженных объектах, замораживает инициализирующий лямбда-выражение, поэтому используйте его очень осторожно. Кроме того, как и при других операциях с AtomicReference, возможно утечка памяти, поэтому рекомендуется использовать atomicLazy в случае объектов, живущих вечно, таких как одиночные объекты, или в тех случаях, когда циклический мусор гарантированно отсутствует.
fun <T> atomicLazy(initializer: () -> T): Lazy<T>
attach
Присоединяет ранее отсоединённый подграф объектов, созданный с помощью DetachedObjectGraph. Обратите внимание, что после присоединения графа объектов указатель DetachedObjectGraph.stable больше не имеет смысла и должен быть отброшен, поэтому присоединение одного объекта DetachedObjectGraph может произойти только один раз.
fun <T> DetachedObjectGraph<T>.attach(): T
callContinuation0
fun COpaquePointer.callContinuation0()
callContinuation1
fun <T1> COpaquePointer.callContinuation1()
callContinuation2
fun <T1, T2> COpaquePointer.callContinuation2()
ensureNeverFrozen
Эта функция гарантирует, что если во время попытки заморозки мы видим такой объект, попытка замораживания завершается неудачей, и генерируется исключение FreezingException.
fun Any.ensureNeverFrozen()
freeze
Замораживает подграф объектов, доступный из этого объекта. Замороженные объекты могут свободно использоваться между потоками/рабочими процессами.
fun <T> T.freeze(): T
waitForMultipleFutures
fun <T> Collection<Future<T>>.waitForMultipleFutures( millis: Int ): Set<Future<T>>
waitWorkerTermination
fun waitWorkerTermination(worker: Worker)
withWorker
Выполняет block с новым Worker в качестве ресурса, запуская новый рабочий процесс, вызывая предоставленный block (в текущем контексте) с недавно запущенным рабочим процессом в качестве этого и завершая рабочий процесс после завершения блока. Обратите внимание, что эта операция довольно ресурсоёмкая, используйте предварительно настроенный рабочий процесс или пул рабочих процессов, если вам нужно выполнять её часто.
fun <R> withWorker( name: String? = null, errorReporting: Boolean = true, block: Worker.() -> R ): R
© 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/index.html