码迷,mamicode.com
首页 > 编程语言 > 详细

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

时间:2014-06-19 00:15:42      阅读:326      评论:0      收藏:0      [点我收藏+]

标签:des   style   class   blog   code   http   

#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,布布扣

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

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

标签:des   style   class   blog   code   http   

原文地址:http://www.cnblogs.com/lakeone/p/3789639.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!