linux 互斥锁mutex锁使用示例

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


前言

提示:这里可以添加本文要记录的大概内容:

linux 互斥锁mutex锁使用示例,两个线程操作一个全局变量。


提示:以下是本篇文章正文内容,下面案例可供参考

一、互斥锁mutex是什么?

互斥锁(Mutex,Mutual Exclusion Object的简称)是一种常用的同步机制,用于控制多个线程或进程对共享资源的独占访问。在多线程或多进程编程中,当多个执行单位(如线程)需要访问同一份共享数据时,如果没有适当的同步措施,可能会导致竞态条件(race condition),从而引起程序行为的不确定性。

  1. 互斥锁(Mutex)
  • 适用场景:当需要保护一个共享资源,确保同一时刻只有一个线程可以访问时,互斥锁是首选。
  • 优点:简单易用,支持递归锁,即允许一个线程多次锁定同一个锁而不死锁。
  • 缺点:如果线程被调度器挂起或阻塞,持有锁的线程可能无法及时释放锁,导致其他线程等待。

当一个线程对互斥锁(mutex)加锁后,任何其他试图对该锁加锁的线程都将被阻塞,直到原始持有锁的线程释放锁。
互斥锁用在 同一个进程的线程间 使用
pthread_mutex_init
pthread_mutex_destroy
pthread_mutex_lock
pthread_mutex_trylock
pthread_mutex_unlock

二、代码示例

#include <stdio.h>
#include <pthread.h>
#include <unistd.h>
#include <stdlib.h>
#include <errno.h>

// 定义一个全局变量
int global_counter = 0;

// 创建一个互斥锁
pthread_mutex_t
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值