所以在我正在编写的程序中,我有三个函数,为了简单起见,我们称它们为 A、B 和 C。每个函数都需要访问资源 X 才能工作。
限制是A和B不允许同时运行,必须适当同步。但是,允许 C 与 A 或 B 同时运行。
这给我带来了一些问题。
首先,我尝试在 A 和 B 上加锁,因此当调用 A 时,它会获取 X 的锁,然后释放它,与 B 相同。这样 A 和 B 顺序运行。但是,如果我以这种方式使用锁,C 将无法与 A 或 B 同时运行。
所以我尝试使用条件变量,如果 B 正在运行,A 必须等待来自 B 的信号,而 B 必须等待来自 A 的信号,但是这种相互依赖的调用似乎也不起作用。
不知道该怎么办。