您可以根据需要在ThreadEx类中添加wait4Manifold()和ReleaseManifold()函数。这里给出一个示例:
class ThreadEx {
public:
// ...
void wait4Manifold() {
std::unique_lock<std::mutex> lock(mtx);
cv.wait(lock, [] { return !hasResource; });
hasResource = true;
spdlog::info("Thread[{}]:waiting for manifold", get_id());
lock.unlock();
}
void ReleaseManifold() {
std::unique_lock<std::mutex> lock(mtx);
hasResource = false;
cv.notify_all();
spdlog::info("Thread[{}]:manifold released", get_id());
}
// ...
};
在Task1()函数中,您可以使用wait4Manifold()获取唯一资源,在Task2()函数中使用ReleaseManifold()释放唯一资源。
希望这对您有所帮助!
内容由零声教学AI助手提供,问题来源于学员提问




