美文网首页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 - 欢迎来到多线程的世界

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

  • 多线程编程

    参考:C++ 并发编程 线程 windsows多线程 new thread(...) linux 多线程: pth...

  • C++并发编程实战介绍附下载

    《C++并发编程实战》是一本基于C++11新标准的并发和多线程编程深度指南。内容包括从std::thread、st...

  • JAVA内存模型---JMM

    JAVA多线程编程是JAVA有别于C/C++的一大特性。最近在学习JAVA并发编程的艺术,遇到了很多问题,但是既然...

  • C++多线程

    基于进程的多任务处理是程序的并发执行。 基于线程的多任务处理是同一程序的片段的并发执行。 c++多线程编程使用的是...

  • 原子操作内存序

    [TOC] 参考 1. C++11多线程-内存模型2. c++并发编程1.内存序3. 浅谈Memory Reord...

  • iOS多线程总结2-NSOperation

    iOS多线程总结2-NSOperation 欢迎交流,欢迎指出错误 推荐雷纯峰大大的一篇文章《iOS 并发编程之 ...

  • C++并发编程 - 互斥锁(lock_guard和unique_

    C++并发编程 - 互斥锁 在多线程的编程中,共享数据的修改限制是必不可少的环节。期望的是:当一个线程访问共享数据...

  • 关于并发编程的博客收藏

    Android并发编程 开篇http://ddrv.cn/a/23502/ Android并发编程 多线程与锁ht...

  • Java多线程干货系列—(一)Java多线程基础

    前言 多线程并发编程是Java编程中重要的一块内容,也是面试重点覆盖区域,所以学好多线程并发编程对我们来说极其重要...

网友评论

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

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