是否可以创建一个从不同类调用函数的线程?

Is it possible to create a thread that calls a function from a different class?

本文关键字:调用 同类 函数 线程 一个 创建 是否      更新时间:2023-10-16

我正在开发一个C++11多重威胁的GUI程序。

所以我有DevToolsMainWindow课。我想从MainWindowclicked(( 事件函数调用属于DevTools的函数。(所有对象定义都是在类的定义上创建的(。

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();
}