Worker
Class representing a worker.
Worker represents a thread of execution and a queue of work sent to this worker. Once started, the worker processes its own queue until it is explicitly terminated.
Worker's API resembles both executor and threads API:
It is a resource that has to be closed.
Failure to terminatae and join the termination request leads to native memory leak.
It cannot be terminated externally while processing the work queue, leading to a crash.
It can be parked, but while parked, worker is allowed to process its own tasks' queue.
In order to unpark a worker, any task has to be submited to the worker.
The work can be sent to the worker both in forms of regular runnables and delayed (timed) runnables.
There is no mechanism to cancel delayed runnables.
Attempts to invoke any method of worker being terminated lead to a runtime exception.
It includes such things as innocuous Worker.current from the current worker.
Since Kotlin
1.3Properties
Name of the worker, as specified in Worker.start or "worker $id" by default,
Get platform thread id of the worker thread.
Functions
Convert worker to a COpaquePointer value that could be passed via native void* pointer. Can be used as an argument of Worker.fromCPointer.
Plan job for further execution in the worker.
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.
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.
Requests termination of the worker.