c++ - 如何在 C++ 中创建单进程互斥锁?
问题描述
因此,我正在阅读有关监视器与互斥锁的内容,并发现有人提到监视器是更快的互斥锁,因为它们不会锁定系统范围,而只会锁定给定进程的线程。
C++ 中有什么方法可以完成或模拟这个吗?
编辑:我现在很好奇系统范围的互斥锁和仅限于特定进程的互斥锁之间有什么区别。
解决方案
C++ 标准没有定义系统范围和每个进程的原语。所以C++没有指定是否std::mutex
是系统范围的。
合理的实现具有高效的每个进程std::mutex
;要拥有系统范围的互斥锁,您需要为您的平台使用库或操作系统对象
不同之处在于每个进程互斥体可以使用任何内存操作来避免系统调用,因为进程内存在进程的线程之间共享。对该内存的原子操作更有效,并且通常通过它们避免系统调用。系统范围的互斥锁要么从系统调用开始(效率不高),要么必须使用共享内存(可能不安全,也可能有一些开销)。
推荐阅读
- pytorch - 我们可以在 Pytorch DataLoader 中的工作人员之间共享内存吗?
- java - 如何忽略正则表达式中的正/负后瞻/前瞻组?
- javascript - 如何将日期传递给我的 addEventListener 函数?
- java - 加密密钥中的盐可以不同用于加密和解密吗?
- asp.net - 这行中的 (?) 是什么意思?- ASP.net
- php - Windows / PHP 在 Intranet 网站上打开本地文件夹
- java - SWIG 生成的代码在提前返回时泄漏内存
- gulp - Gulp 适用于任务,但不适用于观察者
- php - 在我的 Laravel 项目中,我的登录屏幕上出现 403 禁止错误。我该如何解决?
- javascript - 我班级的调用方法引发错误