1.4 新手入门

你现在有一个比较好的C++11的编译器,那么接下来呢?一个多线程的C++程序是什么样的?它看上去和其他的C++程序没什么两样,都是变量类和函数的混合。唯一的不一样可能是他们是同步执行的,所以你需要确定并行访问的数据是安全的,当然为了并行运行函数,必须使用特定的类和函数管理不同的线程。

1.4.1 你好并行的世界

一个程序打印“HelloWorld”,在单线程中的运行程序:

#include <iostream>

int main()

{

std::cout << "Hello World\n";

}

并行程序中:

#include <iostream>

#include <thread>

void hello()

{

std::cout << "Hello Concurrent World\n";

}

int main()

{

std::thread t(hello);

t.join();

}

第一个不同是#include <thread>,这个是多线程库的头文件:管理多线程的函数和类在thread中声明,但是保护共享数据的声明在其他头文件中

第二,打印的代码被移到一个单独的函数中,这是因为每个线程都必须有一个初始函数,它是新线程的执行开始,对于一个程序的初始线程是main函数,但是对于每一个在std::thread object中指定的线程必须有一个新函数作为它的起始函数,比如本程序中的hello()。

下面的不同:比直接在main中写标准的输出或调用hello,这个程序时新建一个线程去执行。一共有两个线程,一个是main的起始线程(主线程),一个是执行hello的线程。

新线程被执行后,主线程继续执行,如不等待新线程完成,它将继续执行到结束,可能在新线程有机会执行前。这就是为什么调用join()函数,它将等待线程执行完。

对于标准输出这样简单的工作去使用多线程是不值得的,特别是主线程没什么事情要做。稍后我们将展示一个使用多线程的例子。

时间: 2024-11-08 21:24:10

1.4 新手入门的相关文章

Gulp新手入门教程

Gulp 是一个自动化工具,前端开发者可以使用它来处理常见任务: 搭建web服务器 文件保存时自动重载浏览器 使用预处理器如Sass.LESS 优化资源,比如压缩CSS.JavaScript.压缩图片 当然Gulp能做的远不止这些.如果你够疯狂,你甚至可以使用它搭建一个静态页面生成器.Gulp真的足够强大,但你必须学会驾驭它. 这是这篇文章的主要目的.帮助你了解Gulp的基础用法,助你早日完成一统天下的大业. 在我们深入了解之前,我们先来说说为什么是Gulp. 为什么是Gulp? 类似Gulp的

javascript新手入门必读书籍推荐

在当下,极多的程序员是通过自学来完成入门以及提升的.对于JavaScript的学习来说,同样不例外.许多新手入门javascript选择通过视频教程或者论坛交流的方式进行学习,这种方式固然较为轻松和便捷,但在知识的获取上有些碎片化,对于新手来说不是很好. 在javascript的入门阶段,通过书籍来学习对于新手来说才是最好的手段.书籍的学习固然比较枯燥,但是也是最权威,最系统化的,对于新手来说能够快速的完成基础知识的奠基,而对于之后进一步的提升也是大有裨益.这里笔者就结合自身经验为各位javas

新手入门:微信小程序--从入门到精通宝典

<ignore_js_op> 作为新手入门的宝典,我们整理了本论坛各种有价值的内容,并按循序渐进的方式呈现给大家.大家可以按顺序一篇一篇的攻克本帖中的内容,也可以作为字典,跳转至关注的内容去学习.希望大家在这里能快速成长,成为微信小程序开发的顶尖高手. 本帖的内容结构如下:一:小程序之张小龙全面阐述及思维导图:二:微信小程序官方地址三:如何学习微信小程序四:新手入门系列教程集合五:公司开发前必读六:个人开发前必读 一:小程序之张小龙全面阐述及思维导图: 小程序之张小龙全面阐述:于1月9日上线(

【LaTeX】E喵的LaTeX新手入门教程(2)基础排版

换了块硬盘折腾了好久..联想的驱动真坑爹.前情回顾[LaTeX]E喵的LaTeX新手入门教程(1)准备篇文档框架嗯昨天我们已经编写了一个最基本的文档,其内容是这样的:\documentclass{article}\begin{document}XXX is a SB.\end{document}这个文档呢其实是分为两部分的:一部分是\begin{document}之前的那部分也就是第一行,这一部分我们称之为导言区.导言区的内容可以不只一行,它的作用是完成文档的基础设定.比如在这个文档中,我们使用

WordPress建站 新手入门

WordPress建站 新手入门教程系列 1. WordPress入门 之 什么是WordPress? 2. WordPress入门 之 搭建WordPress站点需要什么条件? 3. WordPress入门 之 如何安装WordPress 4. WordPress入门 之 USBWebserver 快速搭建本地PHP环境 5. WordPress入门 之 WordPress基本设置 6. WordPress入门 之 创建和管理文章分类 7. WordPress入门 之 鲜为人知的后台“小私密”

Android新手入门2016(16)--画图

本文来自肥宝传说之路,引用必须注明出处! 画图设计到图片的格式,有空可以看看图片资源各种格式.了解一下图片格式,对学习有用的.而且我面试别人的时候也很喜欢问这个问题,哈哈. 先看个图. 直接看代码吧,注释很详细了. activity_hello_world.xml <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.andro

2015-2:新手入门之菜鸟也要用kaili

前沿:今天有些抽筋,看了看小站的视频(百度搜关键词:百度贴吧小站kali视频),突然有些丹痒痒,决定玩玩kali,这几天一直在看CCNP的还有RHCA的一些教程,感觉需要学习的还是挺多的,唉~关键是我比较手残,这次实验总的来说比较曲折,安装前我还特意看了看优酷上关于安装kali到本机的视频,主要是虚拟机玩起来不怎么拉风,在一个,硬盘还有一百多G空着,我习惯把一些资料放在移动硬盘,本机主要安装一些软件之类的.虚拟机下操作就一个重点,安装以后立刻快照,安好各种工具以后立刻快照,一个白的,一个实用的出

Project Server 2013新手入门 (一)为PWA添加用户并分享网站

之前做过Project server 2013的很多测试,一直没发上来.现在终于想着能写点自己会的东西,都比较简单,我也是新手. 之前测试的文档我会陆续的发上来,供新人参考,有不懂的,大家也可一起讨论. 我这里就不先写什么安装操作的文档啦,如果以后有需要,我再做.接下来的几篇稿子,我都写project PWA搭建好之后的一 些实际测试.那么,接下来我就开始分享我知道的东西. 一.为PWA新建用户 我们都知道微软的产品基本都是基于微软特有的AD活动目录的,这些产品像Exchange,Lync,Sh

Project Server 2013新手入门 (二)为PWA用户分配权限

上一篇文章我们讲到怎么为project server 2013 的PWA网站添加用户,那么用户添加好了,我们怎么给这些用户设置相应的权限,来对应我们项目管理中不同的角色(项目经理,资源经理.员工.负责人等),以便他们在项目整个过程中行使的权利和责任体现在我们的Project Server PWA的项目管理中心. 为用户分配PWA的全局权限(关于这个全局权限,我会在以后的文章中介绍) 执行完以上步骤之后,我们将在Project Server 2013 "服务器设置"下管理用户. 1)返回

Project Server 2013新手入门 (三)检查用户的有效权限

上篇文章里讲的怎么给PWA的用户来设置权限,那我们把用户的权限分配好了,怎么知道我们分配的权限对不对呢,或者说怎么去查看一个用户在PWA中的权限呢.下面的内容我将介绍怎么操作. 当我们配置完应该去检查一下用户的有效权限,这样可一方便我们管理用户. 1.同样是在"管理用户"页面,选中我们要查看的用户名称,点击"检查有效权限". 注意:我们也可以点击"停用用户"来阻止离职员工或者部分员工对PWA的使用,此时用户状态显示为"非活动"