vs2010 如何使用c++11特性里面的thread

 我来答
帐号已注销
推荐于2017-11-26 · TA获得超过3954个赞
知道大有可为答主
回答量:1636
采纳率:77%
帮助的人:1235万
展开全部

VS2010还没有实现C++11的线程支持库, 换VS2012或者VS2013.


std::thread 的使用非常放便和强大,该类几乎可以把任何函数作为线程主函数


用法:

  1. 首先包含头文件 #include <thread>

  2. 定义线程主函数: 根据不同的需要,线程的主函数可以是普通函数、函数对象、lambda表达式或者类成员函数。

  3. 建立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();
}
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式