【发布时间】:2013-10-17 02:20:30
【问题描述】:
我有一个列表,其中包含要处理的数据。而且我有 2 个线程,
UI 线程:更新/添加列表项,
线程 1:一旦将项目添加到列表中,它就会将项目一个接一个地发送到另一个线程 2,
线程 2:它是否工作并相应地更新项目,一旦完成工作,它会检查列表,如果相应的项目仍然存在于列表中,如果存在则处理数据。
在关闭窗口时从 UI 线程,我正在从地图中删除从 UI 添加的项目。这样线程 2 就不会继续从列表中删除的项目。
从 UI destruct 或者,我正在删除列表中添加的项目实例。
问题是,线程 2 已经在处理一个项目,同时窗口关闭并且析构函数删除了线程 2 正在处理的项目。
所以线程 2 对数据的处理崩溃了。
我已经在 MFC 中完成了这项工作。如何同步这 2 个线程(UI 删除和线程 2)。我知道 MFC 中有不同的线程同步方法。哪种方法最适合这种情况?
【问题讨论】:
标签: c++ multithreading mfc synchronization