代码改变世界

笔记1 linux 多线程 互斥锁

2015-09-25 15:09  夏洛克·福尔摩斯  阅读(250)  评论(0编辑  收藏  举报
//mutex lock
#include<stdio.h>
#include<unistd.h>
#include<pthread.h>

struct test
{
    char a[10];
    char b[10];
    char c[10];
}yb = {"111","222","33333"};

static int j=0;

pthread_mutex_t mutex_1 = PTHREAD_MUTEX_INITIALIZER;;

void Print1(struct test *arg)
{
    pthread_mutex_lock(&mutex_1);
    printf("a=%s,b=%s,c=%s,d=%X,j=%d\n",arg->a,arg->b,arg->c,pthread_self(),j++);
    pthread_mutex_unlock(&mutex_1);
    pthread_exit((void *)j);
    printf("Never Coming.\n");
}


int main()
{
    pthread_t pid1,pid2,pid3;
    void *set;

    pthread_create(&pid1,NULL,&Print1,&yb);
    pthread_create(&pid2,NULL,&Print1,&yb);
    pthread_create(&pid3,NULL,&Print1,&yb);

    pthread_join(pid1,&set);
    printf("pid1 exit coed %d\n",(int)set);
    pthread_join(pid2,&set);
    printf("pid2 exit coed %d\n",(int)set);
    pthread_join(pid3,&set);
    printf("pid3 exit coed %d\n",(int)set);

    sleep(1);
    return 0;
}