美文网首页C++多线程
C++并发编程0 - 欢迎来到多线程的世界

C++并发编程0 - 欢迎来到多线程的世界

作者: 小熊猜猜我有几颗糖 | 来源:发表于2016-09-27 11:27 被阅读140次

    C++11中引入了多线程编程,一般教科书中都没有涉及到这个概念,但是在工作中多线程却又是必不可少的。本文会展示最基本的Hello World, Concurrency程序。

    概述

    C++11之后,多线程终于被支持了,C++开发者再也不需要借助boost等第三方库的力量,来实现跨平台的并行编程。语言层面上的支持,能够让开发者更加专注于业务逻辑,从而减少对系统平台的关注。C++11多线程的引入,让C++编程更加高效和简便。

    最近一直研究多线程编程,忽然有感,如果我每掌握一个知识点,便分享出来,这比我蒙头死学更加高效。如果我的使用不正确,也有机会被指出来。所以便想整理网络或者书籍上所能学到的东西,写一个教程出来,力求能让刚入门不久的C++开发者,也能轻松的掌握并发编程的奥妙。

    本教程不涉及太多原理性东西,需要那些知识的可以百度,或者买本《C++并发编程实战》,网路上或书籍里原理性的东西已经够多了,我想写的是让读者看完之后,能够很轻松的知道,该怎么用C++的多线程机制。其中,很多内容都是来自网路或者书籍上,感谢各位大神慷慨的分享。

    如果没有特殊提及,本教程的所以代码都是基于Visual Studio 2013,如果更换其他编译器有可能无法运行。

    Hello World

    经典的Hello World式开端。

    #include <iostream>
    #include <thread>
    void hello()
    {
     std::cout << "Hello world, concurrency" << std::endl;
    }
    int main()
    {
     std::thread t(hello);
     t.join(); // 没有这句话,会Debug Error的
        return 0;
    }
    

    这段代码很简单,如果用过boost多线程编程,那么应该对这个了如指掌了。首先包含线程库头文件<thread>,然后定义一个线程对象t,线程对象负责管理以hello()函数作为初始函数的线程,join()等待线程函数执行完成——这儿是阻塞的。

    这个最简单的Hello World已经包含了多线程编程的基本结构,至于线程管理、数据共享、线程同步、原子操作,以及一系列进阶操作都会在后面详细阐述。


    关注微信公众号FreeHacker

    相关文章

      网友评论

        本文标题:C++并发编程0 - 欢迎来到多线程的世界

        本文链接:https://www.haomeiwen.com/subject/dgnfyttx.html