C 5.1 Multithread Library or DLL Limited to 32 Threads

ID Number: Q47932

5.10 6.00 6.00a

OS/2

Summary:

The C version 5.1 statically linked, multithread library LLIBCMT.LIB

and the dynamically linked, multithread CRTLIB.DLL support only a

single process's threads numbered 1 to 32 inclusive (with C version

6.0 the 32-thread limit has been removed; the number of threads

possible is determined by the operating system limit). This limits an

application that uses C run-time functions to creating 31 threads with

the _beginthread() function, in addition to the process's initial

thread 1.

More Information:

If you call C run-time library (or DLL) functions from thread 33 or

higher, no error message will be issued, but you will get undefined

results including incorrect data and segment violations. Note that

creating threads that call C run-time library functions should be done

with the _beginthread() function to perform required C-library

initializations that are not performed by DosCreateThread().

Because the 32-thread maximum number is a per process limit, calling

another DLL does not increase the number of supported threads since

the instance of the DLL called by the process is effectively part of

the process. Spawning or exec'ing a child process allows the new

process a new set of threads 1-32.

A substantially greater number of threads will be considered for

inclusion in a future release.

Additional reference words: 5.10 6.00 6.00a