搜文章
推荐 原创 视频 Java开发 iOS开发 前端开发 JavaScript开发 Android开发 PHP开发 数据库 开发工具 Python开发 Kotlin开发 Ruby开发 .NET开发 服务器运维 开放平台 架构师 大数据 云计算 人工智能 开发语言 其它开发
Lambda在线 > CPP开发之家 > linux基础编程—互斥锁

linux基础编程—互斥锁

CPP开发之家 2017-10-31

互斥意味着具有“排它性”,即两个线程不能同时进入被互斥保护的代码。Linux下可以通过pthread_mutex_t 定义互斥体机制完成多线程的互斥操作,该机制的作用是对某个需要互斥的部分,在进入时先得到互斥体,如果没有得到互斥体,表明互斥部分被其它线程拥有,此时欲获取互斥体的线程阻塞,直到拥有该互斥体的线程完成互斥部分的操作为止。 互斥量的操作函数包括:

#include <pthread.h>

int pthread_mutex_init(pthread_mutex_t *mutex, const pthread_mutexattr_t, *mutexattr);

int pthread_mutex_lock(pthread_mutex_t *mutex);

int pthread_mutex_unlock(pthread_mutex_t *mutex);

int pthread_mutex_destory(pthread_mutex_t *mutex);


#include <pthread.h>

#include <stdio.h>

#include <stdlib.h>

#include <string.h>

#include <semaphore.h>

#define SIZE 1024

char buffer[SIZE];

void *thread_function(void *arg);

pthread_mutex_t mutex;

int main()

{

int res;

pthread_t a_thread;

void *thread_result;

res = pthread_mutex_init(&mutex, NULL);

if (res != 0)

{

perror("Mutex init failed!");

exit(EXIT_FAILURE);

}

res = pthread_create(&a_thread, NULL, thread_function, NULL);

if (res != 0)

{

perror("Thread create failed!");

exit(EXIT_FAILURE);

}

printf("Input some text. Enter 'end' to finish/n");

while (1)

{

pthread_mutex_lock(&mutex);

scanf("%s", buffer);

pthread_mutex_unlock(&mutex);

if (strncmp("end", buffer, 3) == 0)

break;

sleep(1);

}

res = pthread_join(a_thread, &thread_result);

if (res != 0)

{

perror("Thread join failed!");

exit(EXIT_FAILURE);

}

printf("Thread joined/n");

pthread_mutex_destroy(&mutex);

exit(EXIT_SUCCESS);

}

void *thread_function(void *arg)

{

sleep(1);

while (1)

{

pthread_mutex_lock(&mutex);

printf("You input %d characters/n", strlen(buffer));

pthread_mutex_unlock(&mutex);

if (strncmp("end", buffer, 3) == 0)

break;

sleep(1);

}

}


版权声明:本站内容全部来自于腾讯微信公众号,属第三方自助推荐收录。《linux基础编程—互斥锁》的版权归原作者「开发者VIP」所有,文章言论观点不代表Lambda在线的观点, Lambda在线不承担任何法律责任。如需删除可联系QQ:516101458

文章来源: 阅读原文

相关阅读

关注开发者VIP微信公众号

开发者VIP微信公众号:mlxmpublic

开发者VIP

手机扫描上方二维码即可关注开发者VIP微信公众号

开发者VIP最新文章

精品公众号随机推荐