我的程序中有多个线程,其中一个是在内部数据结构上运行的。由于某些错误,此线程退出,使数据结构处于无效状态。其他线程如何在以后的访问中正确验证数据结构的状态?一般来说,如何处理这种情况?
答案 0 :(得分:0)
最好的答案是确保线程不会退出而使数据结构无效。除此之外,唯一的解决方案是:
课堂上:
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.