是否可以创建一个从不同的 class 调用函数的线程?
Is it possible to create a thread that calls a function from a different class?
我正在开发 C++11 多线程 GUI 程序。
所以我有 DevTools
和 MainWindow
类。我想从 MainWindow
clicked() 事件函数调用属于 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();
}
我正在开发 C++11 多线程 GUI 程序。
所以我有 DevTools
和 MainWindow
类。我想从 MainWindow
clicked() 事件函数调用属于 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();
}