1.代码:
#include <QtWidgets/QApplication>
#include <qdebug.h>
#include <thread>
void try1(int m) {
while (m--) {
}
qDebug() << m;
}
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
std::thread t(try1, 20000);
return a.exec();
}
正确写法。
2.代码:
std::thread test(runTest, macIndex);
test.detach();
static void runTest(int index);
void MacController::runTest(int index)
{
curController->device->start();
curController->audioInput->start(curController->device);
}
在子线程中执行runTest函数,传入参数macIndex。
C++11多线程join()和detach()的理解_join detach-CSDN博客
detach()函数:分离线程函数,让线程在后台执行,主线程不会等待子线程运行结束才结束。
正确写法
3.代码:
普通的类成员函数runTest
std::thread test(runTest, macIndex);
test.detach();
void runTest(int index);
void MacController::runTest(int index)
{
curController->device->start();
curController->audioInput->start(curController->device);
}
错误写法.
4.代码
std::thread test(&MacController1::runTest, this,macIndex);
test.detach();
void runTest(int index);
void MacController::runTest(int index)
{
curController->device->start();
curController->audioInput->start(curController->device);
}
正确写法