首页 > 其他分享 >cpp中加锁问题

cpp中加锁问题

时间:2023-11-24 21:34:04浏览次数:33  
标签:std 加锁 lock 问题 互斥 调用 线程 cpp mutex

std::mutex 

mutex 类是一个同步原语,可用于保护共享数据不被多个线程同时访问。
互斥体提供独占的、非递归的所有权语义:
调用线程从成功调用lock或try_lock直到调用unlock为止都拥有互斥体。
当一个线程拥有互斥锁时,如果所有其他线程尝试声明该互斥锁的所有权,则所有其他线程都将阻塞(对于 lock 调用)或收到错误的返回值(对于 try_lock)。
在调用 lock 或 try_lock 之前,调用线程不得拥有互斥体。
如果互斥锁在仍由任何线程拥有时被销毁,或者线程在拥有互斥锁时终止,则程序的行为是未定义的。 mutex 类满足 Mutex 和 StandardLayoutType 的所有要求。
std::mutex 既不可复制也不可移动。

std::muetx::lock

锁定互斥体。如果另一个线程已经锁定了互斥体,则对 lock 的调用将阻塞执行,直到获取锁为止。
如果lock由已经拥有互斥锁的线程调用,则行为是未定义的:例如,程序可能会死锁。鼓励可以检测无效使用的实现抛出带有错误条件resource_deadlock_would_occur的std::system_error而不是死锁。
同一互斥锁上的先前的 unlock() 操作与此操作同步(如 std::memory_order 中所定义)。

 

 运行这段代码,编译器不会报错,但是不建议这种行为。

 

标签:std,加锁,lock,问题,互斥,调用,线程,cpp,mutex
From: https://www.cnblogs.com/studie/p/17854808.html

相关文章

  • [Deeplearning] 过河问题
    先模拟一下样例125101和2去,耗时21回,耗时35和10去,耗时132回,耗时151和2去,耗时17现在我们把题目化为两种策略策略1:共2人,一起过河,用时较小的将手电筒放回策略2:共4人,耗时较小的两人先过,接着将手电筒送回,用时较大的两人过,最后右侧用时最小的人将手电筒送回,左侧两人一起过......
  • 以精确反馈促进学生编程逻辑和问题解决意识:一种基于两层测试的在线编程训练方法
    (PromotingStudents’ProgrammingLogicandProblem-SolvingAwarenessWithPrecisionFeedback:ATwo-TierTest-BasedOnlineProgrammingTrainingApproach)DOI:10.1177/07356331221087773一、摘要研究目的:培养学生的计算机编程技能已成为全球重要的教育问题。然而,学......
  • Oracle DBA遇到的top150个问题
    作为OracleDBA(数据库管理员),以下是更多常见的Oracle数据库管理中可能遇到的150个问题案例:数据库备份和恢复失败数据库性能下降数据库连接问题长时间运行的查询和死锁数据库服务器崩溃或宕机数据库空间不足数据库日志文件过大数据库表空间损坏数据库安全漏洞数据库版本升......
  • 使用PhpStudy配置Nginx解决跨域问题
    系统:Windows如果你是用phpstudy来进行lnmp的集成环境,你想解决跨域问题是很简单的:处理步骤:第一步:找到你前端要请求的后端接口的url的域名:比如:http://localhost2/index.php/index/test/helloworld那么域名就是localhost2第二步:找到域名对应的nginx配置文件位置打开phpstudy......
  • Ubuntu20.04 安装后部分问题解决方案
    安装搜狗输入法搜狗官方有教程:https://shurufa.sogou.com/linux/guideUbuntu与Windows时间不一致的问题安装ntpdate:sudoapt-getinstallntpdate校准时间:sudontpdatetime.windows.com将时间更新到硬件上:sudohwclock--localtime--systohc单击任务栏图标使窗......
  • 背包问题算法
    01背包问题01背包是一种动态规划问题。动态规划的核心就是状态转移方程有一个容量为V的背包,还有n个物体。现在忽略物体实际几何形状,我们认为只要背包的剩余容量大于等于物体体积,那就可以装进背包里。每个物体都有两个属性,即体积w和价值v。问:如何向背包装物体才能使背包中物体......
  • unity 精灵图集(Sprite Atlas)使用以及带来的问题
    1、图集的使用参考https://zhuanlan.zhihu.com/p/4561013732、注意点unity中设置必须是图集的设置TightPacking选项取消,若打勾切图会有问题。......
  • 遇到了vue3 刷新问题
     index.d762f427.js:3[Vuewarn]:Unhandlederrorduringexecutionofschedulerflush.ThisislikelyaVueinternalsbug.Pleaseopenanissueathttps://new-issue.vuejs.org/?repo=vuejs/coreat<Tags>at<HomeonVnodeUnmounted=fn<onVnodeU......
  • 关于npm的问题整理
    npminstall提示权限不足Error:EPERM:operationnotpermitted,unlinkXXX原文[npminstall提示权限不足Error:EPERM:operationnotpermitted,unlinkXXX_npminstall--no-optional-CSDN博客]......
  • pip更新失败问题
    在使用pip安装python插件时,发现pip版本过低导致安装失败,于是使用命令pipinstall--upgradepip更新pip,结果出现如下错误,多次尝试都无法更新成功。失败原因是网络原因导致的,最终找到方法,使用本地镜像更新pip,更新成功。本地镜像更新命令如下:python-mpipinstall--upgradepip......