【发布时间】:2020-05-08 19:00:17
【问题描述】:
我理解互斥锁的基本原理是保护特定的代码路径不被超过1个线程访问。
在我当前的设置中,我有 10 个 A 类 (A1-A10) 线程和 10 个 B(B1-B10) 类线程。我的意思是,运行无限循环并分别调用方法 A() 和 B() 的线程。从这些方法 A 和 B 中,它们都在调用函数 X()。
我想要做的是,锁定函数 X() 中的代码的某个部分,以便在任何时候从一对 A 和 B (A1:B1, A2:B2...) 中只有 1正在访问该路径。这意味着 A1 位于该代码路径或 B1 中,同样,A2 位于 B2 的代码路径中,依此类推。如果 A1、A2、B3、B4、A5.. 同时访问该代码路径,那很好。只是 A-B 对中只有 1 个线程访问此代码。
我该如何实现?
X() {
//
Lock this code so that either of (A1, B1) can access it
and so on..
//
}
【问题讨论】:
标签: c++ multithreading locking mutex stdmutex