gpt4 book ai didi

c++ - 在 wxwidgets 中,如何让一个线程在继续之前等待另一个线程完成?

转载 作者:可可西里 更新时间:2023-11-01 11:40:31 27 4
gpt4 key购买 nike

我有一个系统,我的单例类生成一个线程来进行计算。如果用户在另一个计算仍在运行时请求另一个计算,我希望它拆除现有线程并启动一个新线程。但是,它应该等待第一个线程完全退出才能继续。我已经完成了所有的拆解工作,但我似乎无法确保只有一个线程运行。我的方法是让 StartCalculation 函数调用 mutex->Lock()。析构函数中的线程释放锁。它不工作。我假设如果 Lock() 无法获得锁,它会旋转并不断尝试重新获取锁,我的假设是否正确?这个 Lock() 可以从我的主应用程序线程调用吗?任何想法都是有帮助的。也许 wxMutex 锁是正确的机制。

最佳答案

要等待一个线程,您需要将其创建为可连接的,只需使用wxThread::Wait()。但是我同意上面的评论:这根本不是你通常会做的事情,而且绝对不是从主 GUI 线程做的,因为你永远不应该阻塞它,因为这会卡住 UI。

考虑使用 message queue简单地告诉现有线程它需要执行的新任务。

关于c++ - 在 wxwidgets 中,如何让一个线程在继续之前等待另一个线程完成?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2123265/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com