首页 > 解决方案 > 如何在 C++ 中创建单进程互斥锁?

问题描述

因此,我正在阅读有关监视器与互斥锁的内容,并发现有人提到监视器是更快的互斥锁,因为它们不会锁定系统范围,而只会锁定给定进程的线程。

C++ 中有什么方法可以完成或模拟这个吗?

编辑:我现在很好奇系统范围的互斥锁和仅限于特定进程的互斥锁之间有什么区别。

标签: c++performancemutexmonitor

解决方案


C++ 标准没有定义系统范围和每个进程的原语。所以C++没有指定是否std::mutex是系统范围的。

合理的实现具有高效的每个进程std::mutex;要拥有系统范围的互斥锁,您需要为您的平台使用库或操作系统对象

不同之处在于每个进程互斥体可以使用任何内存操作来避免系统调用,因为进程内存在进程的线程之间共享。对该内存的原子操作更有效,并且通常通过它们避免系统调用。系统范围的互斥锁要么从系统调用开始(效率不高),要么必须使用共享内存(可能不安全,也可能有一些开销)。


推荐阅读