C++中的对象级锁定

Object level locking in c++

假设我有两个classes,P和S。classP的每个对象都引用了classS的一个对象。假设一共有class P 的 20 个对象,其中 10 个具有对象 S1,另外 10 个具有对象 S2,其中 S1 和 S2 是 class S 的对象。是否可以分别锁定 S1 和 S2,以便两个分别具有S1和S2的对象可以运行并行吗?

您可以使用 std::mutex.

class S
{
 std::mutex mutex;
 ...
};

这样,当S1.mutex被锁定时,所有对S1的引用都会被锁定,当S2.mutex被锁定时,所有对S2的引用也会被锁定。这样他们就被独立锁定了。如果您将 mutex 声明为 static,它会给您带来不良影响,希望能澄清差异。