c++ - 是否可以创建一个从不同类调用函数的线程?
问题描述
我正在开发一个 C++11 多线程 GUI 程序。
所以我有DevTools
andMainWindow
类。我想DevTools
从MainWindow
clicked() 事件函数中调用一个属于的函数。(所有对象定义都是在类的定义上创建的)。
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# - 如何在类中提供固定的“关键值”?
- javascript - 页面刷新时 JavaScript 不加载
- c# - 为什么在 App() 构造函数中显示对话框会阻止 WPF 应用程序出现?
- python - Python -basemap:经度约定问题,如何通过 180° 绘制构造边界
- mongodb - ParseObjectIdPipe 用于 MongoDB 的 ObjectID
- download - Google Drive API 文件下载状态 0
- apache-kafka - 如何逐条消息向Kafka发送消息
- flutter - 使用 Cloudinary 和 Flutter 替换上传的图片
- ios - 从 SwiftUI 中的 TabView 获取选定选项卡索引的方法
- python - 有没有办法在 python 中显示原始图像?