gpt4 book ai didi

c++ - 是否可以创建一个从其他类调用函数的线程?

转载 作者:行者123 更新时间:2023-12-02 10:14:01 25 4
gpt4 key购买 nike

我正在研究C++ 11多重GUI程序。
所以我有DevToolsMainWindow类。我想从DevTools clicked()事件函数调用一个属于MainWindow的函数。 (所有对象定义都是在类的定义上创建的)。MainWindow上的函数调用Obtain_XY_Thread:

void MainWindow::on_obtain_xy_clicked()
{
DevTools.Obtain_XY_Thread();
}
所以 DevTools::Obtain_XY_Thread()被调用,它创建了 Obtain_XY线程,但我真正想要的是直接调用 Obtain_XY:
void DevTools::Obtain_XY_Thread()
{
thread obtain_xy(&DevTools::Obtain_XY, *this);
obtain_xy.detach();
}

void DevTools::Obtain_XY()
{
for(int i=0;i<500;i++){
//does something
}
}
这行得通,但我认为这不是正确的方法。有什么方法可以调用 Obtain_XY而不必创建另一个函数?如何直接在 MainWindow::on_obtain_xy_clicked()上创建线程?

最佳答案

只需通过添加std::thread即可解决:

void MainWindow::on_obtain_xy_clicked()
{
std::thread obtain_xy(&DevTools::Obtain_XY, &DevTools);
obtain_xy.detach();
}

关于c++ - 是否可以创建一个从其他类调用函数的线程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62567248/

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