The mechanisms for creating and deleting threads under IBM C and C++ Compilers are:
_beginthread
and _endthread
You should use _beginthread to create any threads that
call IBM C and C++ Compilers library functions. When the thread is
started, the library environment is initialized and ensures that
resources and data are handled correctly between threads.
The IBM C and C++ Compilers product also provides the global variable _threadid that identifies your current thread, and the function _threadstore that gives you a private thread pointer to which you can assign any thread-specific data structure.
CreateThread and ExitThread
Threads created by the CreateThread API do not have
access to the resource management facilities or to VisualAge for
C++ exception handling. You must use a #pragma handler directive
for the thread function to ensure correct exception handling. You
should also call _fpreset from the new thread to ensure the
floating-point control word is set correctly for the thread.
Although you can use ExitThread to end threads created with
_beginthread, you should use _endthread to ensure that the
necessary cleanup of the environment is done.
IThread
The start member function of the IThread class is used to start additional
threads. This member function has three overloaded versions and
three corresponding constructors for:
Because IThread can handle functions that fall under both static and dynamic thread control mechanisms, and those that do not, it is the preferred thread handling mechanism. It does not only what other mechanisms do, it does it better. Unlike _beginthread, you don't have to explicitly call _endthread to clean up the environment, and unlike CreateThread, you do not have to write your own exception handler.
You can use the IThread class in your multithread programs to :
![]()
Multithreaded Applications
Thread Local Storage
![]()
Use the Multithread Libraries
Terminate Execution with Multiple Threads
![]()
Signal and Exception Handlers in
Multithreaded Applications