【发布时间】:2020-11-16 20:48:25
【问题描述】:
背景:我有几个线程应该访问共享数据。其中一个线程可能会锁定一个互斥锁,并且在互斥块内,(同一线程的)某些函数可能会再次调用同一个锁。
-我不想创建很多互斥锁
-我不想放弃锁定(显然)
-我宁愿不改变设计,因为这是一个很大的变化
void funcB()
{
lock(MA);
...
unlock(MA);
}
void funcA()
{
lock(MA);
...
funcB();
...
unlock(MA);
}
似乎唯一的方法是 - 使用递归锁。使用此功能有什么缺点吗?
当然,如果你有其他办法解决这个案子,请分享
【问题讨论】: