12
#include<stdio.h> #include<pthread.h> #include<unistd.h> int finished=0; pthread_mutex_t lock=PTHREAD_MUTEX_INITIALIZER; void *do_homework(void*arg){ sleep(5); pthread_mutex_lock(&lock); finished=1; pthread_mutex_unlock(&lock); } void *check_homework(void*arg){ sleep(1); pthread_mutex_lock(&lock); printf("老师:作业写完了吗?!\n"); while(finished==0) { printf("学生:没写完呐!\n"); pthread_mutex_unlock(&lock); printf("老师:好的,你接着写吧!\n"); printf("-------------------------\n"); sleep(1);pthread_mutex_lock(&lock); printf("老师:作业写完了吗?!\n"); } printf("学生:写完啦!\n"); pthread_mutex_unlock(&lock); printf("老师开始检查---------------\n"); } int main(){ pthread_t tid1,tid2; pthread_create(&tid1,NULL,do_homework,NULL); pthread_create(&tid2,NULL,check_homework,NULL); pthread_join(tid1,NULL); pthread_join(tid2,NULL); return 0; }
#include<stdio.h> #include<pthread.h> #include<unistd.h> int finished=0; pthread_mutex_t lock=PTHREAD_MUTEX_INITIALIZER; pthread_cond_t cond=PTHREAD_COND_INITIALIZER; void *do_homework(void*arg){ sleep(5); pthread_mutex_lock(&lock); finished=1; pthread_mutex_unlock(&lock); pthread_cond_signal(&cond); printf("发送条件信号--------------\n"); } void *check_hom #include<stdio.h> #include<pthread.h> #include<unistd.h> int finished=0; pthread_mutex_t lock=PTHREAD_MUTEX_INITIALIZER; pthread_cond_t cond=PTHREAD_COND_INITIALIZER; void *do_homework(void*arg){ sleep(5); pthread_mutex_lock(&lock); finished=1; pthread_mutex_unlock(&lock); pthread_cond_signal(&cond); printf("发送条件信号--------------\n"); } void *check_homework(void*arg){ sleep(1); pthread_mutex_lock(&lock); printf("老师:作业写完了吗?!\n"); while(finished==0) { printf("学生:没写完呐!\n"); printf("老师:好的,你接着写吧!\n"); printf("-------------------------\n"); pthread_cond_wait(&cond,&lock); printf("老师:作业写完了吗?!\n"); } printf("学生:写完啦!\n"); pthread_mutex_unlock(&lock); printf("老师开始检查---------------\n"); } int main() { pthread_t tid1,tid2; pthread_create(&tid1,NULL,do_homework,NULL); pthread_create(&tid2,NULL,check_homework,NULL); pthread_join(tid1,NULL); pthread_join(tid2,NULL); return 0; }ework(void*arg){ sleep(1); pthread_mutex_lock(&lock); printf("老师:作业写完了吗?!\n"); while(finished==0) { printf("学生:没写完呐!\n"); printf("老师:好的,你接着写吧!\n"); printf("-------------------------\n"); pthread_cond_wait(&cond,&lock); printf("老师:作业写完了吗?!\n"); } printf("学生:写完啦!\n"); pthread_mutex_unlock(&lock); printf("老师开始检查---------------\n"); } int main() { pthread_t tid1,tid2; pthread_create(&tid1,NULL,do_homework,NULL); pthread_create(&tid2,NULL,check_homework,NULL); pthread_join(tid1,NULL); pthread_join(tid2,NULL); return 0; }
#include<unistd.h>
#include<stdio.h>
#include<pthread.h>
int tickets=3;
void *allen(void*arg)
{
int flag=1;
while(flag)
{
int t=tickets;
usleep(1000*20);
if(t>0)
{
printf("allen buy a ticket\n");
--t;
usleep(1000*20);
tickets=t;
}
else
flag=0;
usleep(1000*20);
}
return NULL;
}
void *luffy(void*arg)
{int flag=1;
while(flag)
{
int t=tickets;
usleep(1000*20);
if(t>0){
printf("luffy buy a ticket\n");
--t;
usleep(1000*20);
tickets=t;
}
else
flag=0;
usleep(1000*20);
}
return NULL;
}
int main()
{
pthread_t tid1,tid2;
pthread_create(&tid1,NULL,allen,NULL);
pthread_create(&tid2,NULL,luffy,NULL);
pthread_join(tid1,NULL);
pthread_join(tid2,NULL);
return 0;
}
#include<unistd.h> #include<stdio.h> #include<pthread.h> int tickets=3; pthread_mutex_t lock=PTHREAD_MUTEX_INITIALIZER; void *allen(void*arg) { int flag=1; while(flag) { pthread_mutex_lock(&lock); int t=tickets; usleep(1000*20); if(t>0) { printf("allen buy a ticket\n"); --t; usleep(1000*20); tickets=t; } else flag=0; pthread_mutex_unlock(&lock); usleep(1000*20); } return NULL; } void *luffy(void*arg) {int flag=1; while(flag) { pthread_mutex_lock(&lock); int t=tickets; usleep(1000*20); if(t>0){ printf("luffy buy a ticket\n"); --t; usleep(1000*20); tickets=t; } else flag=0; pthread_mutex_unlock(&lock); usleep(1000*20); } return NULL; } int main() { pthread_t tid1,tid2; pthread_create(&tid1,NULL,allen,NULL); pthread_create(&tid2,NULL,luffy,NULL); pthread_join(tid1,NULL); pthread_join(tid2,NULL); return 0; }