vs2010 如何使用c++11特性里面的thread
展开全部
VS2010还没有实现C++11的线程支持库, 换VS2012或者VS2013.
std::thread 的使用非常放便和强大,该类几乎可以把任何函数作为线程主函数。
用法:
首先包含头文件 #include <thread>
定义线程主函数: 根据不同的需要,线程的主函数可以是普通函数、函数对象、lambda表达式或者类成员函数。
建立std::thread对象,并把线程要运行的函数(线程主函数)以及相应的函数参数通过构造函数传递给该对象, 构造函数通常会海纳百川。
例:
#include <thread>
#include <iostream>
class ThreadMain {
public:
void operator()() {
run();
}
void run() {
std::cout << "Hello, C++11 thread\n";
}
};
void generalFunc(int data) {
std::cout << "Hello, C++11 thread\n";
}
int main() {
ThreadMain tm;
std::thread t1(generalFunc, 1); /*传递普通函数指针和参数0给thread对象t1*/
std::thread t2(&ThreadMain::run, &tm); /*将成员函数传递给thread对象t2, 并且传递调用该函数的对象的指针&tm*/
std::thread t3(tm); /*传递一个函数对象给t3*/
std::thread t4([]() { std::cout << "Hello, C++11 thread\n"; }); /*传递lambda表达式给thread对象t4*/
/* 调用join函数等待线程终止,并回收线程所占资源*/
t1.join();
t2.join();
t3.join();
t4.join();
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询