在 C++ 中处理异步调用和数据一致性问题通常需要使用线程同步机制。下面是一些常用的方法:
std::mutex mtx;
// 访问共享资源的代码
{
std::unique_lock<std::mutex> lock(mtx);
// 访问共享资源
}
std::condition_variable cv;
std::mutex mtx;
bool ready = false;
// 访问共享资源的代码
{
std::unique_lock<std::mutex> lock(mtx);
// 等待条件满足
cv.wait(lock, []{ return ready; });
// 访问共享资源
}
// 通知条件已经满足
{
std::lock_guard<std::mutex> lock(mtx);
ready = true;
cv.notify_one();
}
#include <atomic>
std::atomic<bool> flag(false);
// 访问共享资源的代码
if (flag.load()) {
// 访问共享资源
}
flag.store(true);
以上方法可以用于保证异步调用时数据的一致性问题。在实际应用中需要根据具体情况选择合适的同步机制。