【发布时间】:2018-04-19 21:54:50
【问题描述】:
我想在 C++ 中锁定一个内存区域。
我有一个循环的内存缓冲区。生产者线程写入缓冲区,消费者线程从缓冲区读取。这两个进程只有在访问内存的重叠区域时才需要同步。
在 c++ 标准库(或任何与此相关的库)中是否有一个类可以用来在内存区域上构建锁?
如果没有,这里有什么好的方法?
【问题讨论】:
-
这个内存区域的锁与通用锁又名互斥锁有何不同?
-
正确 - 因为它具有范围语义。基本上,我想在一个线程中使用 lock(10, 50) 并在另一个线程中锁定 (40, 90) - 第二个应该是阻塞的,因为 40 在 (10, 50) 内。
-
我怀疑任何库都会有它,很可能你必须自己实现一个,可能使用
std::mutex和std::condition_variable -
这就是我的想法,但我想我会检查一下。
-
你可以试试 std::atomic。
标签: c++ multithreading locking