This repository has been archived on 2024-12-16. You can view files and clone it, but cannot push or open issues or pull requests.
CodeBlocksPortable/WATCOM/samples/os2/mthread.c

48 lines
1,012 B
C

#include <process.h>
#include <stdio.h>
#include <stddef.h>
#define INCL_DOS
#include <os2.h>
static volatile int NumThreads;
static volatile int HoldThreads;
#define NUM_THREADS 5
#define STACK_SIZE 32768
static void a_thread( void *arglist )
/***********************************/
{
while( HoldThreads ) {
DosSleep( 1 );
}
printf( "Hi from thread %d\n", *_threadid );
DosEnterCritSec();
--NumThreads;
DosExitCritSec();
_endthread();
}
int main( void )
/**************/
{
int i;
printf( "Initial thread id = %d\n", *_threadid );
NumThreads = 0;
HoldThreads = 1;
/* initial thread counts as 1 */
for( i = 2; i <= NUM_THREADS; ++i ) {
if( _beginthread( a_thread, NULL, STACK_SIZE, NULL ) == -1 ) {
printf( "creation of thread %d failed\n", i );
} else {
++NumThreads;
}
}
HoldThreads = 0;
while( NumThreads != 0 ) {
DosSleep( 1 );
}
return( 0 );
}