首页 > 解决方案 > 是否可以创建一个从不同类调用函数的线程?

问题描述

我正在开发一个 C++11 多线程 GUI 程序。

所以我有DevToolsandMainWindow类。我想DevToolsMainWindowclicked() 事件函数中调用一个属于的函数。(所有对象定义都是在类的定义上创建的)。

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()直接在上面创建线程?

标签: c++multithreadingc++11function-pointers

解决方案


只需添加以下内容即可解决此问题std::thread

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

推荐阅读