All Bundles

Thread

Abstracts native system thread execution

Operations

Code example:

class Test {
  function : Main(args : String[]) ~ Nil {
    x := Counter->New("x,128");
    y := Counter->New("y,32");
    
    x->Execute(Nil);
    y->Execute(Nil);    

    x->Join();
    y->Join();
  }
}

class Counter from System.Concurrency.Thread {
  @name : String;
  @max : Int;

  New(tag : String) {
    Parent();
    parts := tag->Split(',');
    @name := parts[0]->Trim();
    @max := parts[1]->Trim()->ToInt();
  }

  method : public : Run(param:System.Base) ~ Nil {
    count := 0;
    while(count++ < @max) {
      "{$@name}: {$count}"->PrintLine();
    };
  }
}

New

Name of the thread

New(name:String)
Parameters
NameTypeDescription
nameStringname of the thread

Execute

Called to execute a new thread

method : public : Execute(param:System.Base) ~ Nil
Parameters
NameTypeDescription
paramBaseparameter to be passed into the newly executing thread

GetExecuteID

Returns a unique execution ID

method : public : GetExecuteID() ~ Int

GetName

Returns the thread's name

method : public : GetName() ~ String

Join

Joins the executing thread with the caller

method : public : Join() ~ Nil

Run

Prototype for the thread to be executed

method : public : virutal : Run(param:System.Base) ~ Nil
Parameters
NameTypeDescription
paramBaseparameter to be passed into the thread

Sleep

Sleeps the executing thread

function : Sleep(t:Int) ~ Nil
Parameters
NameTypeDescription
tIntsleep time in milliseconds