线程同步机制之互斥锁通信机制

#include <stdio.h>
#include <stdlib.h>
#include <pthread.h>
#include <string.h>

void *thread_function(void *arg);
pthread_mutex_t work_mutex;
#define WORK_SIZE 1024
char work_area[WORK_SIZE];
int time_to_exit=0;
int main(int argc, char *argv[])
{
    int res;
    pthread_t a_thread;
    void *thread_result;
    res=pthread_mutex_init(&work_mutex,NULL);
    if(res!=0)
    {
        printf("Mutex initialization failed\n");
        exit(EXIT_FAILURE);
    }
    res=pthread_create(&a_thread,NULL,thread_function,NULL);
    if(res!=0)
    {
        printf("Thread creation failed\n");
        exit(EXIT_FAILURE);
    }
    pthread_mutex_lock(&work_mutex);
    printf("Input some text. Enter ‘end‘ to finish\n");
    while(!time_to_exit)
    {
        fgets(work_area,WORK_SIZE,stdin);
        pthread_mutex_unlock(&work_mutex);
        while(1)
        {
            pthread_mutex_lock(&work_mutex);
            if(work_area[0]!=\0)
            {
                pthread_mutex_unlock(&work_mutex);
                sleep(1);
            }
            else 
                break;
        }
    }
    pthread_mutex_unlock(&work_mutex);
    printf("\nWaitting for thread to finish...\n");
    res=pthread_join(a_thread,&thread_result);
    if(res!=0)
    {
        printf("Thread join failed\n");
        exit(EXIT_FAILURE);
    }
    printf("Thread joined\n");
    pthread_mutex_destroy(&work_mutex);
    exit(EXIT_SUCCESS);
    return 0;
}

void *thread_function(void *arg)
{
    sleep(1);
    pthread_mutex_lock(&work_mutex);
    while(strncmp("end",work_area,3)!=0)
    {
        printf("You input %d characters\n",strlen(work_area)-1);
        printf("the character is: %s",work_area);
        work_area[0]=\0;
        pthread_mutex_unlock(&work_mutex);
        sleep(1);
        pthread_mutex_lock(&work_mutex);
        while(work_area[0]==\0)
        {
            pthread_mutex_unlock(&work_mutex);
            sleep(1);
            pthread_mutex_lock(&work_mutex);
        }

    }
    time_to_exit=1;
    work_area[0]=\0;
    pthread_mutex_unlock(&work_mutex);
    pthread_exit(0);
}

线程同步机制之互斥锁通信机制

线程同步机制之互斥锁通信机制,布布扣,bubuko.com

线程同步机制之互斥锁通信机制

上一篇:自己对Java的一点看法


下一篇:java 笔试