Syntax
#include <stdlib.h> /* also in <process.h> */ void _endthread(void);Description
Note: If you use DosCreateThread, you must explicitly call _endthread to terminate the thread.
There is no return value.
In this example, the main program creates two threads, bonjour and au_revoir. The thread bonjour is forcibly terminated by a call to _endthread, while the au_revoir thread ends itself with an implicit call to _endthread.
#define  INCL_DOS
#include <os2.h>
#include <stdio.h>
#include <stdlib.h>
#include <process.h>
void bonjour(void *arg)
{
   int i = 0;
   while (i++ < 5)
      printf("Bonjour!\n");
   _endthread();                         /* This thread ends itself explicitly*/
   puts("thread should terminate before printing this");
}
void au_revoir(void *arg)
{
   int i = 0;
   while (i++ < 5)                      /* This thread makes an implicit      */
      printf("Au revoir!\n");                     /* call to _endthread       */
}
int main(void)
{
   unsigned long tid1;
   unsigned long tid2;
   tid1 = _beginthread(bonjour, NULL, 8192, NULL);
   tid2 = _beginthread(au_revoir, NULL, 8192, NULL);
   if (-1 == tid1 || -1 == tid2) {
      printf("Unable to start threads.\n");
      return EXIT_FAILURE;
   }
   DosWaitThread(&tid2, DCWW_WAIT);            /* wait until threads 1 and 2  */
   DosWaitThread(&tid1, DCWW_WAIT);             /* have been completed        */
   return 0;
   /****************************************************************************
      The output should be similar to:
      Au revoir!
      Au revoir!
      Au revoir!
      Au revoir!
      Au revoir!
      Bonjour!
      Bonjour!
      Bonjour!
      Bonjour!
      Bonjour!
   ****************************************************************************/
}
Related Information