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

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

withThreads

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:

i0&colon;

idCreatep1

id1

(2)

i

0.

(3)

Threads:-Sleep0.5

i

0.501

(4)

Waitid&colon;

i

1.002

(5)

idCreatep2&comma;out

id2

(6)

out

out

(7)

Waitid&colon;

out

2.007

(8)

See Also

Threads

Threads[ConditionVariable]

Threads[Mutex]

Threads[Self]

Threads[Wait]