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

其中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的编译选项

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值