create_thread
| Definition: | atom hThread = create_thread(integer rid, sequence params, integer flags=0) |
| Description: |
Creates a new thread, using a call_proc based approach in a new and private call stack.
rid must be the routine_id of a procedure that can accept the parameters specified in params. The optional flags parameter can be CREATE_SUSPENDED to create a thread in a suspended state, which does not run until resume_thread(hThread) is called. For the default value of 0, execution begins immediately. |
| pwa/p2js: | Not supported. |
| Comments: |
Although not strictly necessary, the specified procedure should finish with a call to exit_thread().
Should a thread want to "return" a result, it should do so by sending an appropriate message, or perhaps setting a flag. Appropriate locking is required when operating on any data (including non-integer constants) that may be shared with any other threads. The main application should normally wait_thread(hThread) before terminating. |
| Example: |
atom eThread = create_thread(routine_id("mythread"),{1})
...
terminate = 1
wait_thread(eThread)
For a complete runnable example, see demo\rosetta\AtomicUrpdates.exw |
| Implementation: | See builtins\VM\pThreadN.e (an autoinclude) for details of the actual implementation. |
| See Also: | call_proc, routine_id, resume_thread, exit_thread, wait_thread |