gpt4 book ai didi

C++如何等待在另一个线程上执行的方法然后主线程完成(VS2010)

转载 作者:行者123 更新时间:2023-11-30 03:20:02 25 4
gpt4 key购买 nike

我有一个方法在另一个线程上执行,然后在主线程上执行。如果完成,它会调用回调。但是主线程必须等待,否则会破坏回调要返回的对象。

现在,为了简单起见,我有以下代码:

int main()
{
Something* s = new Something();
s.DoStuff(); // Executed on another thread
delete (s); // Has to wait for DoStuffCallback() to be executed
}

void Something::DoStuff()
{
// Does stuff
// If done, calls its callback
}
void Something::DoStuffCallback()
{
// DoStuff has finished work
}

我怎样才能等到 DoStuffCallback() 被执行然后继续主线程?

非常感谢!

编辑:

This对我不起作用,因为我无法访问正确的编译器。 (我有提到的 VS2010)

最佳答案

使用 Win32 事件

#include <windows.h>

int main()
{
HANDLE handle = ::CreateEvent(NULL, TRUE, FALSE, NULL);

Something s;
s.DoStuff(handle); // Store the event handle and run tasks on another thread

// Wait for the event on the main thread
::WaitForSingleObject(handle, INFINITE);
}

void Something::DoStuffCallback()
{
// DoStuff has finished work
::SetEvent(m_handle);
}

关于C++如何等待在另一个线程上执行的方法然后主线程完成(VS2010),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53190974/

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