Create - Maple Help
For the best experience, we recommend viewing online help using Google Chrome or Mozilla Firefox.

Online Help

All Products    Maple    MapleSim


Threads

  

Create

  

evaluate an expression in a new thread

 

Calling Sequence

Parameters

Description

Examples

Calling Sequence

Create( expr, opt1, opt2, ... )

Create( expr, var, opt1, opt2, ... )

Parameters

expr

-

(anything) the expression to evaluate in the new thread

var

-

(name) (optional) an output variable for the result

opt1, opt2, ...

-

optional arguments

Description

• 

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.

Examples

> 

with⁡Threads

Add,ConditionVariable,Create,Map,Mul,Mutex,Self,Seq,Sleep,Task,Wait

(1)
> 

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&colon;

> 

id≔Create⁡p⁡1

id≔1

(2)
> 

i

0.

(3)
> 

Threads:-Sleep⁡0.5

> 

i

0.501

(4)
> 

Wait⁡id&colon;

> 

i

1.002

(5)
> 

id≔Create⁡p⁡2&comma;out

id≔2

(6)
> 

out

out

(7)
> 

Wait⁡id&colon;

> 

out

2.003

(8)

See Also

Threads

Threads[ConditionVariable]

Threads[Mutex]

Threads[Self]

Threads[Wait]