CBL_THREAD_CREATE
Creates a thread from a named entry point.
Syntax:
call "CBL_THREAD_CREATE" using by reference entry-name
by reference thread-param
by value param-size
by value flags
by value priority
by value stack-size
by reference thread-id
Parameters:
|
Using call prototype (see Library Routines - Key) |
Picture (32-bit systems) |
entry-name |
pic x(n) space or null terminated |
pic x(n) space or null terminated |
thread-param |
pic x(n) space or null terminated |
Any data item. |
param-size |
cblt-os-size |
pic x(4) comp-5. |
flags |
cblt-os-flags |
pic x(4) comp-5. |
priority |
cblt-sx4-comp5 |
pic s9(9) comp-5 |
stack-size |
cblt-os-size |
pic x(4) comp-5. |
thread-id |
cblt-pointer |
usage pointer. |
On Entry:
entry-name |
Space or null terminated name for the thread |
thread-param |
Parameter passed to the new thread |
param-size |
Set to one of the following values:
0 |
Only the address of thread-param is passed as the parameter to the entry
point in the new thread without any copying of data values |
>0 |
The value of thread-param is copied for a length of param-size and the
address of this copy area is passed to the new thread. The value of thread-param
will still be intact for the created thread, even if the creating thread changes
or deallocates thread-param immediately after the CBL_THREAD_CREATE call. |
|
flags |
A 32-bit number, in which the bits can be set as follows:
Bit |
Meaning |
0 |
0 |
Detach thread immediately when the thread terminates. |
1 |
Do not detach thread immediately. Even when the thread has terminated, its
resources are not freed until the thread is detached. | |
1 |
0 |
Thread priority is relative (-100 to +100). |
1 |
Thread priority is absolute (0 to 100). | |
2 |
0 |
Any monitors locked by this thread when the thread terminates can cause a
run-time system error. |
1 |
An error will not be issued if monitors are locked when the thread terminates |
|
3 |
0 |
Create active |
1 |
Create suspended | |
4-31 |
Reserved. | |
priority |
Set the priority. Normally, the priority is in the range -100 to+100 and
is relative to the current thread's priority. Values of -1 and +1 indicate
the smallest decrement/increment that gives the thread a lower/higher priority
than the caller (unless the caller already has the lowest/highest possible
priority). If a negative/positive value would take the thread's priority lower/higher
than is possible, then the lowest/highest value is used. If bit 1 of flags
is set to 1, then the priority is an absolute value 0 to 100. |
stack-size |
Tell the run-time system how big a stack to give the new thread. A value
of 0 causes a sensible default to be used. If the parameter appears to be
invalid, the run-time system will either ignore it, or return an error indicating
an invalid value was provided. |
On Exit:
Comments:
The entry point specified can be implemented in any language.
If the call succeeds and a new thread is created, its thread identifier is
stored in thread-id and the RETURN-CODE is set to 0. This is true even if
the thread is created detached, however in this case the caller should take
care to ensure that the new thread still exists before using the thread-id
in any other call.
If the call fails thread-id is set to NULL and an error number is set in
RETURN-CODE.
See Also: