线程终止/退出后正在验证数据结构

Validating data structures after thread termination/exit

本文关键字:验证 数据结构 终止 退出 线程      更新时间:2023-10-16

我的程序中有多个线程,其中一个线程在内部数据结构上运行。由于某些错误,此线程退出,使数据结构处于无效状态。其他线程如何在以后访问时正确验证数据结构的状态?一般来说,如何处理这种情况?

最好的答案是确保线程不会退出,从而使数据结构无效。除此之外,唯一的解决方案是:

课堂上:

    bool m_data_valid = true;  // Or possibly 'false' and set it true in constructor

在变化线程中:

    m_data_valid = false;
    ...  // Mutate structure
    m_data_valid = true;

在其他线程中:

    if (!m_data_valid)
        fixup();   // Or whatever you were going to do.