/* Includes */ #include /* Symbolic Constants */ #include /* Primitive System Data Types */ #include /* Errors */ #include /* Input/Output */ #include /* General Utilities */ #include /* POSIX Threads */ #include /* String handling */ /* prototype for thread routine */ void print_message_function ( void *ptr ); /* struct to hold data to be passed to a thread this shows how multiple data items can be passed to a thread */ typedef struct str_thdata { int thread_no; char message[100]; } thdata; int global_val = 0; int main() { pthread_t thread1; /* thread variables */ thdata data1; /* structs to be passed to threads */ /* initialize data to pass to thread 1 */ data1.thread_no = 1; strcpy(data1.message, "Hello!"); pthread_create (&thread1, NULL, (void *) &print_message_function, (void *) &data1); while(global_val != 1) { } printf("end\n"); /* exit */ exit(0); } /* main() */ /** * print_message_function is used as the start routine for the threads used * it accepts a void pointer **/ void print_message_function ( void *ptr ) { thdata *data; data = (thdata *) ptr; /* type cast to a pointer to thdata */ /* do the work */ printf("Thread %d says %s \n", data->thread_no, data->message); global_val = 1; while(1); } /* print_message_function ( void *ptr ) */