美文网首页
Linux--互斥锁

Linux--互斥锁

作者: 锈色的栅栏 | 来源:发表于2024-11-14 01:00 被阅读0次

用于线程的互斥。

互斥锁是一种简单的加锁的方法来控制对共享资源的访问,互斥锁只有两种状态,即加锁(lock )和解锁( unlock )

互斥锁的操作流程如下:
    1)在访问共享资源临界区域前,对互斥锁进行加锁
    2)在访问完成后释放互斥锁上的锁。 (解锁)
    3)对互斥锁进行加锁后,任何其他试图再次对互斥锁加锁的线程将会被阻塞,直到锁被释放。

互斥锁的数据类型是: pthread_mutex_t

1、pthread_ init 函数

#include<pthread.h>
int pthread_mutex_init(pthread_mutex_t * mutex, const pthread_mutexattr_t *attr);
pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER;
可以使用宏 PTHREAD_MUTEX_INITIALIZER 静态初始化互斥锁
这种方法等价于使用 NULL 指定的 attr 参数调用 pthread_mutex_init() 来完成动态初始化,不同之处在于 PTHREAD_MUTEX_INITIALIZER 宏不进行错误检查。

功能:
        初始化一个互斥锁。
参数:
        mutex:互斥锁地址。类型是 pthread_mutex_t 。
        attr:设置互斥量的属性,通常可采用默认属性,即可将 attr 设为 NULL。
返回值:
        成功:0,成功申请的锁默认是打开的。
        失败:非 0 错误码

2、销毁互斥锁

#include<pthread.h>
int pthread_mutex_destroy(pthread_mutex_t *mutex);

功能:
        销毁指定的一个互斥锁。互斥锁在使用完毕后,必须要对互斥锁进行销毁,以释放资源。
参数:
        mutex:互斥锁地址。
返回值:
        成功:0
        失败:非 0 错误码

3、申请上锁

#include<pthread.h>
int pthread_mutex_lock(pthread_mutex_t *mutex);

功能:
        对互斥锁上锁,若互斥锁已经上锁,则调用者阻塞,直到互斥锁解锁后再上锁。
参数:
        mutex:互斥锁地址。
返回值:
        成功:0
        失败:非 0 错误码

int pthread_mutex_trylock(pthread_mutex_t *mutex);
调用该函数时,若互斥锁未加锁,则上锁,返回 0;
若互斥锁已加锁,则函数直接返回失败,即 EBUSY。

4、解锁

#include<pthread.h>
int pthread_mutex_unlock(pthread_mutex_t * mutex);

功能:
        对指定的互斥锁解锁。
参数:
        mutex:互斥锁地址。
返回值:
        成功:0
        失败:非0错误码

相关文章

  • 线程同步与互斥

    Linux--线程编程 多线程编程-互斥锁 线程同步与互斥 互斥锁 信号量 条件变量 互斥锁 互斥锁的基本使用...

  • Golang 锁的相关知识

    Golang锁分类:互斥锁(Mutex)、读写锁(RWMutex)。 互斥锁 在编写代码中引入了对象互斥锁的概念,...

  • iOS底层探索-多线程锁

    多线程的锁大致可分为两大类:互斥锁、自旋锁;也可以分为三类:互斥锁、自旋锁、读写锁。 一、互斥锁:互斥+同步(强调...

  • go-锁机制

    Golang中的锁机制主要包含互斥锁和读写锁 互斥锁 互斥锁是一种简单的加锁的方法来控制对共享资源的访问,互斥锁只...

  • 线程锁

    1.常见的锁包括:互斥锁,自旋锁。 2.互斥锁是指锁的类型,自旋锁是指锁的实现方式。 3.互斥锁:当上...

  • 算法:读写者问题

    锁解析 : RWMutex : 读-写互斥锁 WWMutex : 写-写互斥锁 WPriorityMutex =...

  • 可重入读写锁 ReentrantReadWriteLock

    读写锁分为读锁和写锁,多个线程获取读锁不互斥,读写锁、写写锁互斥。 输出

  • C++锁

    锁的种类 互斥锁、条件锁、自旋锁、读写锁、递归锁。 互斥锁 头文件: 类型:pthread_mutex_t, 函数...

  • CopyOnWrite思想

    读写锁的弊端 读写锁的思想是读读不互斥,读写互斥,写写互斥最大的问题,其实就在于写锁和读锁的互斥。假设写操作频率很...

  • golang笔记——深入了解go中锁机制

    一、锁的基础知识 1. 互斥量/互斥锁 互斥量(Mutex), 又称为互斥锁, 是一种用来保护临界区的特殊变量, ...

网友评论

      本文标题:Linux--互斥锁

      本文链接:https://www.haomeiwen.com/subject/xzpzdjtx.html