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
,它会给您带来不良影响,希望能澄清差异。
假设我有两个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
,它会给您带来不良影响,希望能澄清差异。