`

pthread_mutex_lock Test

    博客分类:
  • APUE
阅读更多
#include <stdio.h>
#include <stdlib.h>
#include <errno.h>
#include <sys/types.h>
#include <unistd.h>
#include <pthread.h>

#define MAX 100000000
static pthread_mutex_t iLock = PTHREAD_MUTEX_INITIALIZER;
long count = 0;

void myThreadA(void)
{
    long i, j;
    pthread_mutex_lock(&iLock);
    for (i=0; i<MAX; ++i)
    {
        j = count;
        ++j;
        count = j;
    }
    printf("A The count is %ld\n", count);
    pthread_mutex_unlock(&iLock);
}
void myThreadB(void)
{
    long i, j ;
    pthread_mutex_lock(&iLock);
    for (i=0; i<MAX; ++i)
    {
        j = count;
        ++j;
        count = j;
    }
    printf("B The count is %ld\n", count);
    pthread_mutex_unlock(&iLock);
}
int main(int argc, char *argv[])
{
    pthread_t tidA, tidB;
    int i,ret;

    ret = pthread_create(&tidA, NULL, (void *)myThreadA, NULL);
    if (0 != ret)
    {
        puts("Create A pthread error");
        exit(1);
    }

    ret = pthread_create(&tidB, NULL, (void *)myThreadB, NULL);
    if (0 != ret)
    {
        puts("Create B pthread error");
        exit(1);
    }

    puts("This is the main process.\n");
    pthread_join(tidA, NULL);
    pthread_join(tidB, NULL);

    printf("The final count is %ld\n", count);

    return 0;
}

gcc -lpthread pmlock.c
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics