waitThread()

Waits for the end of the specified thread.

Synopsis

int waitThread(int threadId,bool log = true);

Parameters

Parameter Description
threadId ID number of the thread to be waited for.
log If this parameter is set to false, no warning will be written in the log if the thread with threadId does not exist or there is any other reason the thread cannot be stopped or waited for.

Return value

0, in the event of errors -1.

Errors

Missing/incorrect argument, for example, the specified thread does not exist.

Description

Waits for the thread with the identification number threadId.

A thread can only be set to wait in the instance it was started.

It is only possible to wait for scripts, which have been started in the current script and it is not possible to wait for the current thread: waitThread(getThreadId()).

Example

void myFunction()
{
  DebugTN("begin of thread");
  int a;
  for (a = 0; a < 10; a++)
  {
    DebugTN(getThreadId(), a);
    delay(1);
    }
  DebugTN("end of thread");
}

/*
  A) with waitThread() -> main() is waiting after startThread()
  as long as the thread does not finish
*/

main()
{
  DebugTN("begin of main");
  int id = startThread("myFunction");
  waitThread(id);
  DebugTN("end of main");
}

/*
  Output in Log Viewer:
  WCCOAui1:2010.11.24 16:28:18.128["begin of main"]
  WCCOAui1:2010.11.24 16:28:18.191["begin of thread"]
  WCCOAui1:2010.11.24 16:28:18.191[1][0]
  WCCOAui1:2010.11.24 16:28:19.191[1][1]
  WCCOAui1:2010.11.24 16:28:20.191[1][2]
  WCCOAui1:2010.11.24 16:28:21.191[1][3]
  WCCOAui1:2010.11.24 16:28:22.191[1][4]
  WCCOAui1:2010.11.24 16:28:23.191[1][5]
  WCCOAui1:2010.11.24 16:28:24.191[1][6]
  WCCOAui1:2010.11.24 16:28:25.191[1][7]
  WCCOAui1:2010.11.24 16:28:26.191[1][8]
  WCCOAui1:2010.11.24 16:28:27.191[1][9]
  WCCOAui1:2010.11.24 16:28:28.191["end of thread"]
  WCCOAui1:2010.11.24 16:28:28.191["end of main"]
*/

/*
  B) without waitThread() -> main() will finish immediately after startThread() call
*/

main()
{
  DebugTN("begin of main");
  int id = startThread("myFunction");
//  waitThread(id);
  DebugTN("end of main");
}

/*
  Output in Log Viewer:
  WCCOAui1:2010.11.24 16:29:54.881["begin of main"]
  WCCOAui1:2010.11.24 16:29:54.959["begin of thread"]
  WCCOAui1:2010.11.24 16:29:54.959["end of main"]
  WCCOAui1:2010.11.24 16:29:54.959[1][0]
  WCCOAui1:2010.11.24 16:29:55.959[1][1]
  WCCOAui1:2010.11.24 16:29:56.959[1][2]
  WCCOAui1:2010.11.24 16:29:57.959[1][3]
  WCCOAui1:2010.11.24 16:29:58.959[1][4]
  WCCOAui1:2010.11.24 16:29:59.959[1][5]
  WCCOAui1:2010.11.24 16:30:00.959[1][6]
  WCCOAui1:2010.11.24 16:30:01.959[1][7]
  WCCOAui1:2010.11.24 16:30:02.959[1][8]
  WCCOAui1:2010.11.24 16:30:03.959[1][9]
  WCCOAui1:2010.11.24 16:30:04.959["end of thread"]
*/

Assignment

Threads

Availability

CTRL