Create - Maple Help
For the best experience, we recommend viewing online help using Google Chrome or Microsoft Edge.
Our website is currently undergoing maintenance, which may result in occasional errors while browsing. We apologize for any inconvenience this may cause and are working swiftly to restore full functionality. Thank you for your patience.

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]