当前位置: 首页 > news >正文

c++ 常用的锁及用法介绍和示例

2024/6/21 14:20:10

在 C++ 中,常用的锁主要包括以下几种:std::mutex、std::recursive_mutex、std::timed_mutex 和 std::shared_mutex。这些锁可以帮助我们在多线程编程中保护共享数据,避免竞争条件。以下是每种锁的介绍及其用法示例:

  1. std::mutex
    std::mutex 是最基本的互斥锁,用于保护共享数据。

示例:

cpp
#include
#include
#include

std::mutex mtx;
int shared_data = 0;

void increment() {
std::lock_guardstd::mutex guard(mtx);
++shared_data;
std::cout << "Shared data: " << shared_data << std::endl;
}

int main() {
std::thread t1(increment);
std::thread t2(increment);

t1.join();
t2.join();return 0;

}
2. std::recursive_mutex
std::recursive_mutex 允许同一个线程多次锁定同一把互斥锁。这在递归函数或者需要在持有锁的情况下再次获取锁的场景中非常有用。

示例:

cpp
#include
#include
#include

std::recursive_mutex rec_

http://www.lryc.cn/news/378416.html

相关文章:

  • PostgreSQL源码分析——口令认证
  • Stability-AI(图片生成视频)
  • Linux机器通过Docker-Compose安装Jenkins发送Allure报告
  • 基于Gunicorn+Flask+Docker模型高并发部署
  • java:类型变量(TypeVariable)解析--基于TypeResolver实现将类型变量替换为实际类型
  • ru俄罗斯域名如何申请SSL证书?
  • python实现购物车的功能
  • 日元预计明年开始上涨
  • 8、PHP 实现二进制中1的个数、数值的整数次方
  • linux git凭证管理
  • WIC 图像处理初体验——读取像素的值
  • 使用Server-Sent Events (SSE),并获取message里面的内容
  • LabVIEW项目管理中如何平衡成本、时间和质量
  • 如何检查 Kubernetes 网络配置
  • 如何将网站封装成App:小猪APP分发助你实现
  • 探索C嘎嘎的奇妙世界:第十六关---STL(vector的练习)
  • 最新扣子(Coze)实战案例:扣子卡片的制作及使用,完全免费教程
  • Node-red win11安装
  • 永久更改R包的安装目录
  • Webrtc支持FFMPEG硬解码之NVIDA(二)
  • 整理好了!2024年最常见 20 道设计模式面试题(九)
  • RAG实操教程langchain+Milvus向量数据库创建你的本地知识库 二
  • Spring+SpringMVC介绍+bean实例化+依赖注入实战
  • 【安装笔记-20240616-Linux-为 OpenWrt 自动挂载 Windows 主机共享目录】
  • 61.WEB渗透测试-信息收集- WAF、框架组件识别(1)
  • qmt量化交易策略小白学习笔记第45期【qmt编程之期货行情数据--如何获取日线行情、tick行情】
  • c#default 运算符
  • 25计算机考研,这所985有机会!
  • SQL 基础入门教程
  • <Python><paddleocr>基于python使用百度paddleocr实现图片文字识别与替换