首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >访问列表项时用户界面和工作线程同步

访问列表项时用户界面和工作线程同步
EN

Stack Overflow用户
提问于 2013-10-17 02:20:30
回答 1查看 208关注 0票数 0

我有一个有数据需要处理的列表。我有两条线,

UI线程:更新/添加列表项,

线程1:一旦将项目添加到列表中,它将逐个将项目发送到另一个线程2,

线程2:它是否工作并相应地更新项目,一旦它完成了它的工作,它就会检查列表,如果它存在,它会处理数据。

在关闭窗口时,从UI线程中删除从UI中添加的项目。这样线程2就不会继续从列表中删除的项。

并从UI析构或,我删除项目实例添加到列表中。

问题是,线程2已经在处理一个项,同时关闭了窗口,并且析构函数也删除了线程2处理中的项。

因此,线程2对数据的处理会崩溃。

我在MFC里做过这个。如何同步这两个线程(UI删除和线程2)。我知道MFC中有不同的线程同步方法。对于这种情况,哪种方法最好?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-10-17 03:08:52

当您想要停止操作时(可能是当用户单击“关闭”按钮时),首先让线程退出。这可以通过线程定期检查的bool或事件(SetEvent)来完成。在您告诉线程退出之后,您不能删除UI或线程使用的任何数据,直到您确定线程已经退出为止。使用WaitForSingleObject中的线程句柄等待线程退出。WaitForSingleObject挂起调用线程,直到线程句柄发出线程退出的信号为止。然后,您可以继续删除和UI关闭。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19417190

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档