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

linux互斥锁:递归锁,非递归锁用法详解

        在实际的项目中经常涉及到共享资源,共享资源被多个线程访问会出现竞争现象;为了解决竞争和保护共享资源常用的机制之一就是互斥锁!

        互斥锁又分为递归锁和非递归锁,互斥锁默认是非递归锁,也是我们常用的上锁方式。那么什么是递归锁和非递归锁呢?

非递归锁(Non-recursive Lock)

        使用方式:非递归锁每次只能被同一个线程加锁一次,若再次尝试加锁会导致死锁。所以在使用非递归锁时,应确保同一个线程不会重复加锁。

        返回值:非递归锁的锁操作函数pthread_mutex_lock和pthread_mutex_trylock返回0表示加锁成功,非0则表示加锁失败。

示例代码:

pthread_mutex_t mutex;void* func(void){pthread_mutex_lock(&mutex);
//        pthread_mutex_lock(&mutex);//上锁之后再申请锁,这样会造成死锁std::cout<<"thread : "<<pthread_self()<<" going to get lock 2st"<<std::endl;
//        pthread_mutex_unlock(&mutex);pthread_mutex_unlock(&mutex);return NULL;
}int main(void)
{int ret = 0;pthread_t p;pthread_mutex_init(&mutex, NULL);//初始化互斥锁if((ret =

相关文章:

linux互斥锁:递归锁,非递归锁用法详解

在实际的项目中经常涉及到共享资源,共享资源被多个线程访问会出现竞争现象;为了解决竞争和保护共享资源常用的机制之一就是互斥锁! 互斥锁又分为递归锁和非递归锁,互斥锁默认是非递归锁,也是我们常用的上锁方式。那么什么是递归锁和非递归锁呢? 非递归锁(Non-recursive …...

MacOS安装dmg提示已文件已损坏的解决方法

MacOS安装dmg提示已文件已损坏的解决方法 导致原因是应用没有上传到苹果的appstroe&#xff0c;系统限制了安装&#xff0c;破碎提示是苹果的误导小手段 方法 一 App 在macOS Catalina&#xff08;比较新的系统&#xff0c;例如m1&#xff0c;m2也适用&#xff09;下提示已损坏…...

前端输入框简单实现检测@成员输入

大体逻辑是 给input框添加一个input监听&#xff0c;并判断输入是否为获取当前光标的位置&#xff0c;你输入的肯定在光标之前&#xff0c;且肯定是最后一个input输入的内容换行可以被认为空格&#xff0c;需要进行全局替换判断成功的逻辑分为两部分&#xff0c;前方一般来说是…...

通过与chatGPT交流实现零样本事件抽取

1、写作动机&#xff1a; 近来的大规模语言模型&#xff08;例如Chat GPT&#xff09;在零样本设置下取得了很好的表现&#xff0c;这启发作者探索基于提示的方法来解决零样本IE任务。 2、主要贡献&#xff1a; 提出了基于chatgpt的多阶段的信息抽取方法&#xff1a;在第一阶…...

使用nodejs和html布局一个简单的视频播放网站,但是使用localhost:端口访问html无法加载视频

js代码&#xff1a; // app.js const express require(express); const path require(path); const app express();// 设置静态文件目录&#xff0c;这里假设你的视频文件在public/videos/目录下 app.use(express.static(path.join(__dirname, )));// 设置主页路由&#xf…...

【AG32VF407】国产MCU+FPGA Verilog双边沿检测输出方波

视频讲解 [AG32VF407]国产MCUFPGA Verilog双边沿检测输出方波 实验过程 本次使用使用AG32VF407开发板中的FPGA&#xff0c;使用双clk的双边沿进行检测&#xff0c;同步输出方波 同时可以根据输出的方波检测clk的频率&#xff0c;以及双clk的相位关系&#xff0c;如下为verilog…...

[晓理紫]每日论文分享(有中文摘要,源码或项目地址)--强化学习、模仿学习、机器人

专属领域论文订阅 关注{晓理紫}&#xff0c;每日更新论文&#xff0c;如感兴趣&#xff0c;请转发给有需要的同学&#xff0c;谢谢支持 如果你感觉对你有所帮助&#xff0c;请关注我&#xff0c;每日准时为你推送最新论文。 为了答谢各位网友的支持&#xff0c;从今日起免费为3…...

为什么说TiDB在线扩容对业务几乎没有影响

作者&#xff1a; 数据源的TiDB学习之路 原文来源&#xff1a; https://tidb.net/blog/e82b2c5f 当前的数据库种类繁多&#xff0c;墨天轮当前统计的所有国产数据库已经有 290个 &#xff0c;其中属于关系型数据库的有 166个 。关系型数据库从部署架构上又可以分为集中式…...

STM32--SPI通信协议(2)W25Q64简介

一、W25Q64简介 1、W25Qxx中的xx是不同的数字&#xff0c;表示了这个芯片不同的存储容量&#xff1b; 2、存储器分为易失性与非易失性&#xff0c;主要区别是存储的数据是否是掉电不丢失&#xff1a; 易失性存储器&#xff1a;SRAM、DRAM&#xff1b; 非易失性存储器&#xff…...

svn安装与搭建

1、svn搭建 # yum install subversion -y //安装 # svnserve --version //查看版本 2、创建仓库目录repo # mkdir -p /opt/svn/repo //创建目录 # svnadmin create /opt/svn/repo/ //创建新仓库 # ls !$ …...

什么是缓存击穿、缓存穿透、缓存雪崩?

缓存雪崩 缓存雪崩是指缓存同一时间大面积的失效&#xff0c;所以&#xff0c;后面的请求都会落到数据库上&#xff0c;造成数据库短时间内承受大量请求而崩掉。 解决方案 缓存数据的过期时间设置随机&#xff0c;防止同一时间大量数据过期现象发生。一般并发量不是特别多的时…...

springboot153相亲网站

简介 【毕设源码推荐 javaweb 项目】基于springbootvue 的 适用于计算机类毕业设计&#xff0c;课程设计参考与学习用途。仅供学习参考&#xff0c; 不得用于商业或者非法用途&#xff0c;否则&#xff0c;一切后果请用户自负。 看运行截图看 第五章 第四章 获取资料方式 **项…...

CMake生成osg的FFMPEG插件及Windows下不生成VS工程问题解决

在Windows下&#xff0c;如何利用CMake生成osg的FFMPEG插件&#xff0c;请参考如下博文&#xff0c;同生成jpeg插件类似&#xff1a; osg第三方插件的编译方法&#xff08;以jpeg插件来讲解&#xff09;。 如下为生成FFMPEG时必要的设置&#xff1a; 注意&#xff1a; 一定要…...

代码随想录算法训练营Day25 | 216.组合总和III、17.电话号码的字母组合

216.组合总和III 与77.组合差不多&#xff0c;就返回条件中收集结果步骤多了一步判断&#xff0c;同时剪枝策略多了一种 vector<vector<int>> ans; vector<int> path; int sum 0;void backtracking(int num, int& k, int& n) {if (path.size() k…...

故障诊断 | 一文解决,SVM支持向量机的故障诊断(Matlab)

效果一览 文章概述 故障诊断 | 一文解决,SVM支持向量机的故障诊断(Matlab) 支持向量机(Support Vector Machine,SVM)是一种常用的监督学习算法,用于分类和回归分析。SVM的主要目标是找到一个最优的超平面(或者在非线性情况下是一个最优的超曲面),将不同类别的样本分开…...

12.1 Web开发_DOMBOM:JS关联CSS(❤❤)

12.1 Web开发_DOM&BOM 1. DOM&BOM2. DOM:文档对象模型2.1 获取页面元素1. getElementById2. getElementsByClassName3. querySelector3. 事件3.1 事件三要素3.2 绑定事件的三种方式1. 标签on2. 对象.on事件3. addEventListener3.3 常用事件...

scoped样式隔离原理

在 Vue 中&#xff0c;作用域样式&#xff08;Scoped Styles&#xff09;是通过以下原理实现的&#xff1a; 1、唯一选择器&#xff1a; 当 Vue 编译单文件组件时&#xff0c;在样式中使用 scoped 特性或 module 特性时&#xff0c;Vue 会为每个样式选择器生成一个唯一的属性…...

降价不是杀手锏,和府捞面打起“养生牌”

餐饮&#xff0c;“走进来”易&#xff0c;“走上去”难。 作为一个低门槛的创业赛道&#xff0c;每年都有数以万计怀着掘金梦的创业者涌入餐饮业。但是&#xff0c;每年也有无数个理由让餐饮经营者黯然离场。根据辰智大数据预测&#xff0c;2023全年餐饮开店率35.5%&#xff…...

在WORD中设置公式居中编号右对齐设置方式

1 软件环境 Office Microsoft Office LTSC 专业增强版2021 2 最终效果 3 操作步骤 编辑公式&#xff1b;光标定位到公式的最后&#xff08;不是行的最后&#xff09;&#xff1b;输入#编号光标定位在公式最后&#xff08;不是行的最后&#xff09;&#xff0c;按Enter键回车…...

如何使用 Supabase Auth 在您的应用程序中设置身份验证

在本文中&#xff0c;您将学习基本的关键概念&#xff0c;这些概念将帮助您掌握身份验证和授权的工作原理。 您将首先了解什么是身份验证和授权&#xff0c;然后了解如何使用 Supabase auth 在应用程序中实现身份验证。 &#xff08;本文内容参考&#xff1a;java567.com&…...

3步解锁魔兽争霸3性能潜力:从60帧到300帧的现代硬件优化实战

3步解锁魔兽争霸3性能潜力&#xff1a;从60帧到300帧的现代硬件优化实战 【免费下载链接】WarcraftHelper Warcraft III Helper , support 1.20e, 1.24e, 1.26a, 1.27a, 1.27b 项目地址: https://gitcode.com/gh_mirrors/wa/WarcraftHelper 魔兽争霸3作为经典RTS游戏&am…...

FPGA实战:从原理到代码,详解按键消抖的三种设计思路与工程优化

1. 按键消抖&#xff1a;FPGA工程师的必修课 第一次用FPGA做按键控制LED时&#xff0c;我盯着疯狂闪烁的灯陷入了沉思——明明只按了一次按键&#xff0c;为什么LED灯像抽风一样乱闪&#xff1f;这就是典型的按键抖动问题。机械按键的金属触点就像个不听话的弹簧&#xff0c;按…...

DS4Windows终极教程:3分钟让PlayStation手柄完美兼容Windows游戏

DS4Windows终极教程&#xff1a;3分钟让PlayStation手柄完美兼容Windows游戏 【免费下载链接】DS4Windows Like those other ds4tools, but sexier 项目地址: https://gitcode.com/gh_mirrors/ds/DS4Windows 还在为PC游戏不支持你的PlayStation手柄而烦恼吗&#xff1f;…...

如何将Smart AM60电视盒子变身高性能Armbian服务器:完整实战指南

如何将Smart AM60电视盒子变身高性能Armbian服务器&#xff1a;完整实战指南 【免费下载链接】amlogic-s9xxx-armbian Supports running Armbian on Amlogic, Allwinner, and Rockchip devices. Support a311d, s922x, s905x3, s905x2, s912, s905d, s905x, s905w, s905, s905l…...

基于STM32CubeMX HAL库的RS485半双工通信实战指南

1. RS485通信基础与STM32开发环境搭建 第一次接触RS485通信时&#xff0c;我被它独特的半双工特性深深吸引。想象一下双向单车道的马路&#xff0c;车辆只能单向交替通行&#xff0c;这就是半双工的精髓。相比全双工需要两根数据线的设计&#xff0c;RS485仅用一对双绞线就能实…...

C#怎么获取U盘的插拔事件_C#如何重写WndProc捕获消息【进阶】

不能&#xff0c;WndProc 本身无法直接捕获 U 盘插拔&#xff0c;必须先调用 RegisterDeviceNotification 注册设备通知&#xff0c;才能使系统将 WM_DEVICECHANGE 消息路由至 WndProc 并正确解析 m.WParam 和 m.LParam。WndProc 能捕获 U 盘插拔吗&#xff1f;不能&#xff0c…...

all-MiniLM-L6-v2效果展示:22.7MB小模型在语义相似度任务中的惊艳表现

all-MiniLM-L6-v2效果展示&#xff1a;22.7MB小模型在语义相似度任务中的惊艳表现 在自然语言处理领域&#xff0c;语义相似度计算是一个基础而重要的任务&#xff0c;它直接影响着搜索、推荐、问答等系统的效果。传统的大模型虽然效果出色&#xff0c;但庞大的体积和计算需求…...

WarcraftHelper:经典游戏现代重生的兼容性解决方案

WarcraftHelper&#xff1a;经典游戏现代重生的兼容性解决方案 【免费下载链接】WarcraftHelper Warcraft III Helper , support 1.20e, 1.24e, 1.26a, 1.27a, 1.27b 项目地址: https://gitcode.com/gh_mirrors/wa/WarcraftHelper 让魔兽争霸III完美适配Windows 10/11系…...

CLIP-GmP-ViT-L-14入门指南:理解ImageNet/ObjectNet双基准评估意义

CLIP-GmP-ViT-L-14入门指南&#xff1a;理解ImageNet/ObjectNet双基准评估意义 1. 什么是CLIP-GmP-ViT-L-14 CLIP-GmP-ViT-L-14是一个经过几何参数化&#xff08;GmP&#xff09;微调的CLIP模型&#xff0c;在计算机视觉领域具有出色的表现。这个模型最大的特点是它在ImageNe…...

Obsidian-skills日志系统:如何记录和分析AI技能使用情况

Obsidian-skills日志系统&#xff1a;如何记录和分析AI技能使用情况 【免费下载链接】obsidian-skills Agent skills for Obsidian. Teach your agent to use Markdown, Bases, JSON Canvas, and use the CLI. 项目地址: https://gitcode.com/GitHub_Trending/ob/obsidian-sk…...