Linux下的线程锁的机制(源代码)

来源:互联网 发布:it before 编辑:程序博客网 时间:2024/05/18 00:25

其中main函数为测试用

#include "stdio.h"#include "myHeadFile.h"#include "stdlib.h"struct mutexType {    pthread_mutex_t id;};typedef struct mutexType* mutex_t;int mutexCreate(    OUT mutex_t* outMutex){    mutex_t mutex;    mutex = (mutex_t)malloc(sizeof(struct mutexType));    if(mutex == NULL)        ERROUT("\n");     if (pthread_mutex_init(&mutex->id, NULL)) {        free(mutex);        ERROUT("\n");     }    printf("mutex = %x\n", mutex);    *outMutex = mutex;        return 0;Err:    return -1;}int mutexLock(    IN mutex_t mutex){    int ret = -1;    if(mutex == NULL)        ERROUT("\n");     ret = pthread_mutex_lock(&mutex->id);    if (0 != ret)        ERROUT("lock err\n");    return 0;Err:    return -1;}int mutexUnlock(    IN mutex_t mutex){    int ret = -1;    if(mutex == NULL)        ERROUT("\n");     ret = pthread_mutex_unlock(&mutex->id);    if (0 != ret)        ERROUT("unlock err\n");    return 0;Err:    return -1;}void task(    IN void* arg){    sleep(1);    mutexUnlock((mutex_t)arg);    printf("task start\n");    return;}int main(){    int ret = -1;    int tid = -1;    mutex_t testMutex = NULL;    ret = mutexCreate(&testMutex);    pthread_create(&tid, 0, task, (void*)testMutex);    ret = mutexLock(testMutex);    printf("ret = %d\n", ret);    sleep(2);    return 0;}

记住编译的时候,加上-lpthread的编译选项

原创粉丝点击