gpt4 book ai didi

c++ - 在多线程环境中对代码进行排序

转载 作者:行者123 更新时间:2023-11-30 04:00:13 24 4
gpt4 key购买 nike

我有一个多线程 C++ MFC 应用程序。我有一个工作线程来执行我的程序逻辑,主线程专用于处理 GUI 事件。 GUI 线程生成程序逻辑线程,并从中分离执行,就像这样 -

void CMyDocument::InGUIThread()
{
std::thread tProgramLogic(programLogicThreadFunction);
tProgramLogic.detach()
}

我的程序逻辑执行大约需要 5 分钟。

这是我的问题:我想在我的程序逻辑执行完毕后在主 GUI 线程中调用一个函数。如何在 programLogic 线程接近执行结束时向我的主线程发出信号?

附言我分离我的 programLogic 线程的原因是我不会卡住我的主线程,因此它可以响应 GUI 事件。

最佳答案

您可以使用 C++11 async 解决方案并使用 wait_for 轮询结果,但在您的特定情况下(在 Windows 环境中),我会寻求更好的解决方案:

1) 定义a custom WM_ message并将其映射以进行处理,例如

 #define WM_MYMSG (WM_USER + 42)
BEGIN_MESSAGE_MAP(CMyApp, CWinApp)
ON_MESSAGE(WM_MYMSG, ThreadHasFinished)
END_MESSAGE_MAP()

2) Post WM_MYMSG当您的逻辑线程以

结束到主窗口时

3) 在ThreadHasFinished

中处理逻辑的终止

关于c++ - 在多线程环境中对代码进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26434649/

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