#include #include #include #include #include #include #if defined(__386__) #define FAR #define STACK_SIZE 8192 #else #define FAR __far #define STACK_SIZE 4096 #endif static volatile int WaitForThread; void FAR child( void FAR *parm ) { char * FAR *argv = (char * FAR *) parm; int i; printf( "Child thread ID = %x\n", *_threadid ); for( i = 0; argv[i]; i++ ) { printf( "argv[%d] = %s\n", i, argv[i] ); } WaitForThread = 0; _endthread(); } void main() { char *args[3]; #if defined(__NT__) unsigned long tid; #else char *stack; int tid; #endif args[0] = "child"; args[1] = "parm"; args[2] = NULL; WaitForThread = 1; #if defined(__NT__) tid = _beginthread( child, STACK_SIZE, args ); printf( "Thread handle = %lx\n", tid ); #else #if defined(__386__) stack = (char *) malloc( STACK_SIZE ); #else stack = (char *) _nmalloc( STACK_SIZE ); #endif tid = _beginthread( child, stack, STACK_SIZE, args ); printf( "Thread ID = %x\n", tid ); #endif while( WaitForThread ) { sleep( 0 ); } }