Creates a thread from a procedure pointer.
Syntax:
call "CBL_THREAD_CREATE_P" using by value entry-point
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
Key)
|
Picture
|
entry-point
|
cblt-ppointer
|
usage procedure-pointer.
|
thread-param
|
pic x(n) null or space terminated
|
Any data item.
|
param-size
|
cblt-os-size
|
pic x(4) comp-5
or
pic x(8) comp-5 (64-bit native programs only)
|
flags
|
cblt-os-flags
|
pic x(4) comp-5
or
pic x(8) comp-5 (64-bit native programs only)
|
priority
|
cblt-sx4-comp5
|
pic s9(9) comp-5
|
stack-size
|
cblt-os-size
|
pic x(4) comp-5
or
pic x(8) comp-5 (64-bit native programs only)
|
thread-id
|
cblt-pointer
|
usage pointer.
|
On Entry:
-
entry-point
- Procedure-pointer set to the appropriate entry point of program to execute.
-
thread-param
- Parameter passed to the new thread
-
param-size
- Set to one of the folllowing:
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 number in which the bits can be set as follows:
- Bit 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 thread is detached.
|
- Bit 1
-
0
|
Thread priority is absolute (0 to 100).
|
1
|
Thread priority is relative (-100 to +100).
|
- Bit 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
|
- Bit 3
-
0
|
Create active
|
1
|
Create suspended
Restriction: This is deprecated in the
.NET environment
|
- Bit 4
-
0
|
Multi-threaded Apartment model (MTA)
|
1
|
Single threaded Apartment model (STA)
|
- Remaining bits
- Reserved.
-
priority
- Sets 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
- Tells 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.
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.