system.thread - Palamecia/mint GitHub Wiki
Module
load system.thread
This module provides classes and functions to create multi-threaded applications.
Packages
Enums
System.Mutex.Type
This enum describe the behavior of the mutex.
Constant | Value | Description |
---|---|---|
Normal | 0 |
Normal mutex must be unlocked before an other lock is performed. If the threa... |
Recursive | 1 |
Recursive mutex can be locked recursively by the same thread but must be unlo... |
System.Promise.State
This enum describes the state of the promise.
Constant | Value | Description |
---|---|---|
Fullfiled | 1 |
The operation was completed successfully. |
Pending | 0 |
Initial state, neither fulfilled nor rejected. |
Rejected | 2 |
The operation failed. |
Classes
System.Future
This class represents the result of an asynchronous operation.
Members
Modifiers | Member | Description |
---|---|---|
+ const |
() | Takes the associated function's result and returns it. If the result is not y... |
+ const |
await | Takes the associated function's result and returns it. If the result is not y... |
- final |
d_ptr | Object data. |
- final % |
function | Internal associated function. |
- @ |
g_lib | Global library handle. |
+ const |
get | Takes the associated function's result and returns it. If the result is not y... |
+ const |
isValid | Returns true if the object thread have been started and a result is or will... |
+ const |
new | Creates a new future for the result of the func function. |
- final |
object | Internal associated object. |
+ const |
start | Starts the associated function in a new thread. The parameters passed to this... |
+ const |
wait | Waits until the associated function completion or until time milliseconds h... |
System.Mutex
This class protect an object, data structure or section of code so that only one thread can access it at a time. The purpose of this class is to be used with instances of System.Thread to synchronize two or more threads.
The LockGuard class can be used to ensure that the mutex is correctly locked and unlocked by a section of code.
Members
Modifiers | Member | Description |
---|---|---|
+ enum |
Type | This enum describe the behavior of the mutex. |
- final |
d_ptr | Object data. |
- @ |
g_lib | Global library handle. |
+ const |
getType | Returns the behavior of this mutex. |
+ const |
lock | Locks the mutex. If another thread has locked the mutex then this call will b... |
+ const |
new | Creates a new mutex. The type parameter describe the behavior of the mutex ... |
+ const |
tryLock | Attempts to lock the mutex. This function returns true if the lock was obta... |
+ const |
unlock | Unlocks the mutex. Attempting to unlock a mutex in a different thread to the ... |
System.Promise
This class represents the eventual completion (or failure) of an asynchronous operation and its resulting value.
Instances of this class are meant to be used only once. Once created, the execution of the asynchronous operation is automaticaly started. Other operations can be peroformed on completion using then.
Example:
System.Promise(def (a, b) {
return a + b
}, i, j).then(def (r) {
return r + 5
}).then(def (r) {
print { 'The result is %d\n' % (r / 2)}
})
Members
Modifiers | Member | Description |
---|---|---|
- enum |
State | This enum describes the state of the promise. |
- final const |
continuation | Performs the resolution of a chained promise. If self is in the System.Prom... |
+ const |
except | This method is equivalent to then but only provides function to be called on ... |
+ const |
finally | This method is equivalent to then but provides the same function to be called... |
- final |
future | Internal future. |
- final const |
getValue | Returns the resulting value of the asynchronous operation. |
+ const |
new | Creates a new promise that will execute the func function with the given pa... |
- final const |
resolve | Performs the resolution of the promise's function. Once resolved, the promise... |
- final % |
state | Internal state. |
+ const |
then | Chains a new promise to be executed once the current result is known. The o ... |
- final |
value | Internal value. |
System.Thread
This class manages one thread of control within the script. A thread can be associated with any function or object method that will be executed alongside the other threads by calling the start method. Once started, the thread will continue until the end of the function.
This type is not copyable
Members
Modifiers | Member | Description |
---|---|---|
- const |
clone | Disable object copy. |
+ @ const |
current | Returns an instance of System.Thread for the current thread. |
+ const |
delete | Waites the end of the called function before object destruction. |
- final |
function | Internal associated function. |
- @ |
g_lib | Global library handle. |
+ const |
getId | Returns the thread-id of the object thread or none if not started. |
- final |
id | Internal thread id. |
+ const |
isJoinable | Returns true if the thread is joinable; otherwise returs false . |
+ const |
isRunning | Returns true if the thread is running; otherwise returs false . |
+ const |
join | Waites for the thread to finish. An instance of Exception.SystemError is rais... |
+ const |
new | Creates a new thread that will execute the func function. |
- final |
object | Internal associated object. |
+ const |
start | Starts the associated function in a new thread. The parameters passed to this... |
Functions
Descriptions
System.Future.()
def (self)
Takes the associated function's result and returns it. If the result is not yet available, the method waits until the associated function completion. The associated function must have been started by a call to start otherwise the method immediately returns. After this method's call, the object will not be valid anymore.
System.Future.await
def (self)
Takes the associated function's result and returns it. If the result is not yet available, the method waits until the associated function completion. The associated function must have been started by a call to start otherwise the method immediately returns. After this method's call, the object will not be valid anymore.
System.Future.d_ptr
null
Object data.
System.Future.function
null
Internal associated function.
System.Future.g_lib
lib ('libmint-system')
Global library handle.
System.Future.get
def (self)
Takes the associated function's result and returns it. If the result is not yet available, the method waits until the associated function completion. The associated function must have been started by a call to start otherwise the method immediately returns. After this method's call, the object will not be valid anymore.
System.Future.isValid
def (self)
Returns true
if the object thread have been started and a result is
or will be available; otherwise returns false
.
System.Future.new
def (self, % func)
Creates a new future for the result of the func
function.
def (self, object, % member)
Creates a new future for the result of the member
method of object
.
System.Future.object
none
Internal associated object.
System.Future.start
def (self, ...)
Starts the associated function in a new thread. The parameters passed to this method are forwarded to the called function.
Returns true
if the thread was effectively started; otherwise returs
false
. The object must not be already running a joinable thread.
System.Future.wait
def (self, time)
Waits until the associated function completion or until time
milliseconds have passed. Returns true
if the associated function
was completed or false
on timeout. The associated function must have
been started by a call to start otherwise the method immediately
returns false
.
def (self)
Waits until the associated function completion. The associated function must have been started by a call to start otherwise the method immediately returns.
System.Mutex.Type.Normal
0
Normal mutex must be unlocked before an other lock is performed. If the thread try to relock an already locked normal mutex, the mutex will deadlock.
System.Mutex.Type.Recursive
1
Recursive mutex can be locked recursively by the same thread but must be unlocked the same amount of times to allow other threads to lock it.
System.Mutex.d_ptr
null
Object data.
System.Mutex.g_lib
lib ('libmint-system')
Global library handle.
System.Mutex.getType
def (const self)
Returns the behavior of this mutex.
System.Mutex.lock
def (self)
Locks the mutex. If another thread has locked the mutex then this call will block until that thread has unlocked it.
If the mutex use the System.Mutex.Type.Recursive behavior, this method can be called multiple times in the same thread; otherwise multiple calls will cause a dead-lock.
System.Mutex.new
def (self, type = System.Mutex.Type.Normal)
Creates a new mutex. The type
parameter describe the behavior of
the mutex an must be an instance of System.Mutex.Type.
System.Mutex.tryLock
def (self)
Attempts to lock the mutex. This function returns true
if
the lock was obtained; otherwise it returns false
.
System.Mutex.unlock
def (self)
Unlocks the mutex. Attempting to unlock a mutex in a different thread to the one that locked it results in an error. Unlocking a mutex that is not locked results in undefined behavior.
System.Promise.State.Fullfiled
1
The operation was completed successfully.
System.Promise.State.Pending
0
Initial state, neither fulfilled nor rejected.
System.Promise.State.Rejected
2
The operation failed.
System.Promise.continuation
def (self, % onFulfilled, % onRejected)
Performs the resolution of a chained promise. If self
is in the
System.Promise.State.Fullfiled state, the onFulfilled
parameter
is called with the promise's result; if self
is in the
System.Promise.State.Rejected state, the onRejected
parameter
is called with the promise's error. If the required parameter is set
to none
, the value (result or error) is returned; otherwise the
returned value is the result of the function call.
System.Promise.except
def (self, % onRejected)
This method is equivalent to then but only provides function to be called on error.
System.Promise.finally
def (self, % onComplet)
This method is equivalent to then but provides the same function to be called on success or error.
System.Promise.future
null
Internal future.
System.Promise.getValue
def (self)
Returns the resulting value of the asynchronous operation.
System.Promise.new
def (self, % func, ...)
Creates a new promise that will execute the func
function with the
given parameters asynchronously. If the execution of the function can
not be started; none
is returned.
System.Promise.resolve
def (self, % func, ...)
Performs the resolution of the promise's function. Once resolved, the promise will be either in the System.Promise.State.Fullfiled state and value will contains the function's result, or in the System.Promise.State.Rejected state and value will contains the function's exception.
System.Promise.state
null
Internal state.
System.Promise.then
def (self, % onFulfilled, % onRejected = none)
Chains a new promise to be executed once the current result is known.
The onFulfilled
parameter must be a function taking one parameter
that will be called with the promise's result on success (i.e. the
value was obtained with return
).
The onRejected
parameter can be a function taking one parameter
that will be called with the promise's result on error (i.e. the
value was obtained with raise
).
The created promise is returned by the method to be chained.
System.Promise.value
none
Internal value.
System.Thread.clone
none
Disable object copy.
System.Thread.current
def ()
Returns an instance of System.Thread for the current thread.
System.Thread.delete
def (self)
Waites the end of the called function before object destruction.
System.Thread.function
null
Internal associated function.
System.Thread.g_lib
lib ('libmint-system')
Global library handle.
System.Thread.getId
def (const self)
Returns the thread-id of the object thread or none
if not started.
System.Thread.id
none
Internal thread id.
System.Thread.isJoinable
def (const self)
Returns true
if the thread is joinable; otherwise returs false
.
System.Thread.isRunning
def (const self)
Returns true
if the thread is running; otherwise returs false
.
System.Thread.join
def (self)
Waites for the thread to finish.
An instance of Exception.SystemError is raised on error.
System.Thread.new
def (self, % func)
Creates a new thread that will execute the func
function.
def (self, object, % member)
Creates a new thread that will execute the member
method of object
.
System.Thread.object
none
Internal associated object.
System.Thread.start
def (self, ...)
Starts the associated function in a new thread. The parameters passed to this method are forwarded to the called function.
Returns true
if the thread was effectively started; otherwise returs
false
. The object must not be already running a joinable thread.
An instance of Exception.SystemError is raised on error.
System.async
def (% func, ...)
Returns an instance of System.Future for the result of the given func
function. The extra parameters passed to this function are forwarded to the
called function. The future object is started by this function. If the
future failed to start, none
is returned instead.
System.asyncMethod
def (self, % func, ...)
Returns an instance of System.Future for the result of the given func
method called on the self
object. The extra parameters passed to this
function are forwarded to the called method. The future object is started
by this function. If the future failed to start, none
is returned instead.
System.sleep
def (const time)
Forces the current thread to sleep for time
milliseconds.
System.wait
def ()
Yields execution of the current thread to another runnable thread, if any. Note that the operating system decides to which thread to switch.