#include int contor=0; pthread_mutex_t mc=PTHREAD_MUTEX_INITIALIZER; pthread_cond_t cc=PTHREAD_COND_INITIALIZER; int thid[3]; pthread_t th[3]; void inccontor(int *id) { int i; for (i=0;i<7;i++) { sleep(2); pthread_mutex_lock(&mc); contor++; printf("Contor... %d\n",contor); if (contor==12) pthread_cond_signal(&cc); pthread_mutex_unlock(&mc); } pthread_exit(NULL); } void watchcontor(int *id) { pthread_mutex_lock(&mc); while (contor<=12) { pthread_cond_wait(&cc,&mc); printf("Cond...\n"); break; } pthread_mutex_unlock(&mc); } main() { int i; thid[0]=0; thid[1]=1; thid[2]=2; pthread_create(&th[0],NULL,(void*)watchcontor,&thid[0]); pthread_create(&th[1],NULL,(void*)inccontor,&thid[1]); pthread_create(&th[2],NULL,(void*)inccontor,&thid[2]); for (i=0;i<3;i++) pthread_join(th[i],NULL); }