W3cubDocs

/Kotlin

Worker

Platform and version requirements: Native (1.3)
inline class Worker

Class representing worker.

Properties

Platform and version requirements: Native (1.3)

id

val id: Int
Platform and version requirements: Native (1.3)

name

Name of the worker, as specified in Worker.start or "worker $id" by default,

val name: String

Functions

Platform and version requirements: Native (1.3)

asCPointer

Convert worker to a COpaquePointer value that could be passed via native void* pointer. Can be used as an argument of Worker.fromCPointer.

fun asCPointer(): COpaquePointer?
Platform and version requirements: Native (1.3)

execute

Plan job for further execution in the worker. Execute is a two-phase operation:

fun <T1, T2> execute(
    mode: TransferMode, 
    producer: () -> T1, 
    job: (T1) -> T2
): Future<T2>
Platform and version requirements: Native (1.3)

executeAfter

Plan job for further execution in the worker. operation parameter must be either frozen, or execution to be planned on the current worker. Otherwise IllegalStateException will be thrown.

fun executeAfter(
    afterMicroseconds: Long = 0, 
    operation: () -> Unit)
Platform and version requirements: Native (1.3)

park

Park execution of the current worker until a new request arrives or timeout specified in timeoutMicroseconds elapsed. If process is true, pending queue elements are processed, including delayed requests. Note that multiple requests could be processed this way.

fun park(
    timeoutMicroseconds: Long, 
    process: Boolean = false
): Boolean
Platform and version requirements: Native (1.3)

processQueue

Process pending job(s) on the queue of this worker. Note that jobs scheduled with executeAfter using non-zero timeout are not processed this way. If termination request arrives while processing the queue via this API, worker is marked as terminated and will exit once the current request is done with.

fun processQueue(): Boolean
Platform and version requirements: Native (1.3)

requestTermination

Requests termination of the worker.

fun requestTermination(
    processScheduledJobs: Boolean = true
): Future<Unit>
Platform and version requirements: Native (1.3)

toString

String representation of the worker.

fun toString(): String

Companion Object Properties

Platform and version requirements: Native (1.3)

current

Return the current worker. Worker context is accessible to any valid Kotlin context, but only actual active worker produced with Worker.start automatically processes execution requests. For other situations processQueue must be called explicitly to process request queue.

val current: Worker

Companion Object Functions

Platform and version requirements: Native (1.3)

fromCPointer

Create worker object from a C pointer.

fun fromCPointer(pointer: COpaquePointer?): Worker
Platform and version requirements: Native (1.3)

start

Start new scheduling primitive, such as thread, to accept new tasks via execute interface. Typically new worker may be needed for computations offload to another core, for IO it may be better to use non-blocking IO combined with more lightweight coroutines.

fun start(
    errorReporting: Boolean = true, 
    name: String? = null
): Worker

© 2010–2020 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/index.html