C++11 thread多线程编程是C++11新加入的多线程API,使用起来比较方便,可以在不同的线程中完成不同的任务,提高程序的运行效率。下面是C++11 thread多线程编程创建方式的完整攻略。
简介
C++11 thread多线程编程是在C++11标准中新增的多线程API。使用C++11 thread多线程编程可以实现线程的创建、销毁、同步等操作,提高程序的效率。
在C++11 thread多线程编程中,有三种创建线程的方式:使用函数指针创建线程、使用函数对象创建线程、使用Lambda函数创建线程。下面一一展开说明。
使用函数指针创建线程
使用函数指针创建线程的步骤如下:
-
定义一个函数,并在函数中编写线程的处理逻辑。
c++
void threadFunc(int arg) {
// 线程处理逻辑
} -
创建线程,并将函数指针传递给线程。
c++
std::thread t1(threadFunc, arg); -
线程启动之后,执行线程的处理逻辑。
c++
t1.join();
完整的示例代码如下:
#include <iostream>
#include <thread>
void threadFunc(int arg) {
std::cout << "threadFunc: " << arg << std::endl;
}
int main() {
int arg = 2021;
std::thread t1(threadFunc, arg);
t1.join();
return 0;
}
使用函数对象创建线程
使用函数对象创建线程的步骤如下:
-
定义一个函数对象,并在函数对象中编写线程的处理逻辑。
c++
class Worker {
public:
void operator()(int arg) {
// 线程处理逻辑
}
}; -
创建线程,并将函数对象传递给线程。
c++
Worker workerObj;
std::thread t2(workerObj, arg); -
线程启动之后,执行函数对象的处理逻辑。
c++
t2.join();
完整的示例代码如下:
#include <iostream>
#include <thread>
class Worker {
public:
void operator()(int arg) {
std::cout << "Worker::operator(): " << arg << std::endl;
}
};
int main() {
int arg = 2021;
Worker workerObj;
std::thread t2(workerObj, arg);
t2.join();
return 0;
}
使用Lambda函数创建线程
使用Lambda函数创建线程的步骤如下:
-
定义一个Lambda函数,并在Lambda函数中编写线程的处理逻辑。
c++
auto threadFunc = [](int arg) {
// 线程处理逻辑
}; -
创建线程,并将Lambda函数传递给线程。
c++
std::thread t3(threadFunc, arg); -
线程启动之后,执行Lambda函数的处理逻辑。
c++
t3.join();
完整的示例代码如下:
#include <iostream>
#include <thread>
int main() {
int arg = 2021;
auto threadFunc = [](int arg) {
std::cout << "Lambda function: " << arg << std::endl;
};
std::thread t3(threadFunc, arg);
t3.join();
return 0;
}
总结
本文简要讲解了C++11 thread多线程编程创建方式的三种方法:使用函数指针、使用函数对象、使用Lambda函数。三种方法的实现细节略有不同,但实现的功能都是一样的,读者可以根据自己的需求选取相应的方式进行使用。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C++11 thread多线程编程创建方式 - Python技术站