#include #include #define PTHREAD_COUNT 2 pthread_mutex_t pthread_mutex; pthread_cond_t pthread_cond; pthread_t pthread[ PTHREAD_COUNT ]; void *goThread() { pthread_mutex_lock( &pthread_mutex ); pthread_cond_wait( &pthread_cond, &pthread_mutex ); pthread_mutex_unlock( &pthread_mutex ); } int main( int argc, char *argv[] ) { int i; printf( "\nInitializing variables..." ); pthread_mutex_init( &pthread_mutex, NULL ); pthread_cond_init( &pthread_cond, NULL ); printf( "\nCreating threads..." ); for ( i = 0; i < PTHREAD_COUNT; i++ ) { pthread_create( &pthread[ i ], NULL, goThread, NULL ); } printf( "\nCancelling threads..." ); for ( i = 0; i < PTHREAD_COUNT; i++ ) { pthread_cancel( pthread[ i ] ); printf( "\nThread %d cancelled", i ); } printf( "\nJoining threads..." ); for ( i = 0; i < PTHREAD_COUNT; i++ ) { pthread_join( pthread[ i ], NULL ); printf( "\nThread %d joined", i ); } pthread_cond_destroy( &pthread_cond ); pthread_mutex_destroy( &pthread_mutex ); return 1; }