Threads
Create
evaluate an expression in a new thread
Calling Sequence
Parameters
Description
Examples
Create( expr, opt1, opt2, ... )
Create( expr, var, opt1, opt2, ... )
expr
-
(anything) the expression to evaluate in the new thread
var
(name) (optional) an output variable for the result
opt1, opt2, ...
optional arguments
The Create command is used to start evaluating a Maple expression in a new thread. This command returns an integer identifier for the new thread.
When the evaluation of expr is finished, the thread terminates. If var is given, the result of the evaluation is assigned to var.
The identifier returned by Create can be passed into Wait.
Due to the unique functionality of Create, there are special evaluation rules for expr. If expr is a procedure, then the arguments to the procedure are evaluated in the current thread, but the function call itself is evaluated in the new thread. If expr is not a procedure, then it is evaluated entirely in the new thread.
One side effect of these rules is that if expr is a function call, with another function call as an argument, the argument will be evaluated in the current thread, not the new thread.
There is one optional argument: stacksize
stacksize = integer
The stacksize optional argument specifies the maximum amount of stack space available to the new thread. The maximum stack size of a thread is fixed at thread creation time and cannot be changed. By default the stack size is the minimum allowed stack, which is platform dependent.
with⁡Threads
Add,ConditionVariable,Create,Map,Mul,Mutex,Self,Seq,Sleep,Task,Wait
p := proc( limit ) local start, now; global i; start := time[real](); now := start; i := now - start; while i < limit do Threads:-Sleep( 0.1 ); now := time[real](); i := now-start; end; return i; end:
i≔0:
id≔Create⁡p⁡1
id≔1
i
0.
Threads:-Sleep⁡0.5
0.501
Wait⁡id:
1.002
id≔Create⁡p⁡2,out
id≔2
out
2.007
See Also
Threads[ConditionVariable]
Threads[Mutex]
Threads[Self]
Threads[Wait]
Download Help Document