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;
}

 
View Code
#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;
}
View Code

 

#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;
    }
View Code

 

posted @ 2021-06-17 16:40  chriszyx  阅读(27)  评论(1编辑  收藏  举报