SlideShare a Scribd company logo
1 of 19
Download to read offline
ここから始める

並行プログラミング
株式会社ロングゲート
高橋 晶(Akira Takahashi)
faithandbrave@gmail.com
2014/05/14(Wed) GREE Tech Talk #05
自己紹介
• 高橋 晶 (Akira Takahashi)
• 普段はC++をメインに使っていますが、

言語マニアなのでScala、Haskell、Rubyなど、いろい
ろ使います。
• 『プログラミングの魔導書』 編集長
• Boost.勉強会 東京の主催者
• 著書:

『C++テンプレートテクニック』

『C++ポケットリファレンス』
プログラミングの魔導書
• 弊社ロングゲートで出版している、雑誌ライクな書籍。
• プログラミングの中・上級者向けの記事を提供している。
Vol.3のテーマは並行・並列・分散
• 2014年1月に出版したVol.3では、並行・並列・分散を
テーマにしました。
• このテーマで深い領域に飛び込みたい方は、ぜひ読んで
みてください。
並行プログラミングは難しい
• 難しい理由は、スレッドを使ったプログラムが

「非決定的である(non deterministic)」という特性
を持っていることです。
• 原理と原則を正しく理解して書かないと、数週間に一
度しか起きないバグに悩まされ、痛い目に会います。
• どんなことを理解すれば、正しいプログラムを書ける
のかを学んでみましょう。
並行と並列
• 複数データ、複数タスクを同時に扱う手法として、

並行と並列という、2つの分野がある。

どちらも、マルチスレッドや複数のCPUコア、複数の
GPUコアを使用して同時処理を行う。
• 並行(Concurrent)は、複数タスクを同時に処理する
際に、タスク間の調停を必要とする計算分野。
• 並列(Parallel)は、複数の計算資源を使用することで、
計算を高速化する分野。
主な使用目的
• 関心の分離として使う
• 関係しない処理同士、もしくは機能性の異なる領域
の処理を、別々に実行する。
• アプリケーションがブロッキングしないよう、

バックグラウンドで処理を動かすのも、

この「関心の分離」に含まれる。
主な使用目的
• パフォーマンスのために使う
• 大量のデータ、大量のタスクを、複数同時に処理する。
• 複数コアを持つCPUであれば、コンテキストスイッチの
コストなく、効率的に複数同時処理を行える。
コンテキストスイッチ
• シングルコアCPUの場合を考える。
• このようなCPUでは、複数の処理をスレッドで同時に行う
場合、「少し実行して他の処理に切り替える」ということ
をする。
• これを「コンテキストスイッチ(context switch)」と言
う。これはOSのスケジューラによって自動的に行われる。
タスク1 タスク2
シングルコア
ハードウェア並行性
• 複数コアを持つCPUでは、コンテキストスイッチを必要と
せず、複数の処理を真に同時実行できる。
• ハイパースレッディングという機構を持ってるCPUであれ
ば、1コアで2つの処理を同時に実行できたりもする。
• このような、ハードウェア性能によって真に同時実行でき
る性質を「ハードウェア並行性(hardware concurrency)」
と言う。
タスク1
タスク2
デュアルコア
非決定性
• 並行プログラミングは、OSのスケジューラが行うコンテ
キストスイッチによって、複数処理を切り替えながら実
行する。
• そのため、実行結果が毎回同じにならないことがある。
• この性質を「非決定性(non-deterministic)」と言う。
非決定性で起こる問題
• 非決定性は、複数スレッドが共通のオブジェクトを操作
するときに問題が起こる。
• 一方のスレッドがオブジェクトxにAを代入する。

もう一方のスレッドがxにBを代入する。
• このプログラムは、OSのスケジューラによって実行タイ
ミングが変わるため、実行結果が「どちらになるかわか
らない」としか言えなくなる。
非決定性を飼い慣らすには
• 並行プログラミングでは、安定しない実行結果を飼い
慣らし、自分が望む結果を常に得られるようにする

必要がある。
• そのためにできる基本的なこと:
• 排他制御する。
• タスクの独立性を高めて、できるだけ共有オブジェ
クトを操作しない。
• 並行プログラミングのデザインパターンを適用する
• より抽象的なプログラミング機構(言語拡張やライブ
ラリ)を活用する。
排他制御する
• ミューテックス(mutex : MUTual EXclusion)は、

ひとつのリソースに複数スレッドが同時アクセスしない
よう、排他制御する仕組み。
• 以下の機構も採用するといいだろう:
• ミューテックスをより高級にした条件変数
(condition variable)やFuture/Promise。
• 排他制御を内部的に行ってくれる並行コンテナ
• さらなるパフォーマンスのためのアトミックオブジェ
クトとロックフリーアルゴリズム。
タスクの独立性を高める設計
• 並行プログラミングを意識せずに作られた、タスクの
独立性が高くないプログラムは、並行に処理すること
が難しい。
• 「関数は引数のみに依存して処理を行う」という原則
に従ってプログラムを書くように心がけると、タスク
の独立性が高くなる。
• HaskellやOCaml、F#といった言語で関数型プログラ
ミングを学べば、そういったプログラムを自然に書け
るようになるだろう。
デザインパターン
• 並行プログラミングで頻出する状況を、うまく解決す
るデザインパターンが存在する。
• 多くの状況では、これらのパターンを適用することで、
設計バグを未然に防ぐことができる。
• Producer-Consumerパターン
• メッセージパッシング (Actorモデル)
• Proactorパターン
抽象的なプログラミング機構
• プログラミング言語の機能、もしくは言語拡張で並行
プログラミングをしやすくするものがある。
• トランザクショナル・メモリー
• OpenMP、Intel Cilk Plus (C++)
• synchronizedブロック (Java)
避けては通れない道
• 並行プログラミングは、もはや避けて通ることはでき
ません。
• 今回はキーワードのみを示したものも多かったですが、
これらを調べ、原理・原則に従ったプログラミングを
心がけ、事故をできる限り減らしてください。
オススメ書籍
• Java並行処理プログラミング
• 並行コンピューティング技法
• The Art of Multiprocessor Programming
• 構造化並列プログラミング
• C++ Concurrency in Action

More Related Content

What's hot

あと一つプログラミング言語を
覚えたら死ぬ! 脳みそがパンクしそうな
あなたのための
nodeJSことはじめ
あと一つプログラミング言語を
覚えたら死ぬ! 脳みそがパンクしそうな
あなたのための
nodeJSことはじめあと一つプログラミング言語を
覚えたら死ぬ! 脳みそがパンクしそうな
あなたのための
nodeJSことはじめ
あと一つプログラミング言語を
覚えたら死ぬ! 脳みそがパンクしそうな
あなたのための
nodeJSことはじめ文樹 高橋
 
括弧を使わないLispプログラミング
括弧を使わないLispプログラミング括弧を使わないLispプログラミング
括弧を使わないLispプログラミングYuta Mizushima
 
チーム開発積み重ね Rails Developers Meetup 2018 Day2
チーム開発積み重ね Rails Developers Meetup 2018 Day2チーム開発積み重ね Rails Developers Meetup 2018 Day2
チーム開発積み重ね Rails Developers Meetup 2018 Day2tatsuo sakurai
 
Roslynで体験してみるC#スクリプト #cs_fukuoka
Roslynで体験してみるC#スクリプト #cs_fukuokaRoslynで体験してみるC#スクリプト #cs_fukuoka
Roslynで体験してみるC#スクリプト #cs_fukuokaYuta Matsumura
 
3日時間をもらったのでTypeScriptを触ってみた
3日時間をもらったのでTypeScriptを触ってみた3日時間をもらったのでTypeScriptを触ってみた
3日時間をもらったのでTypeScriptを触ってみたYasushi Kato
 
プログラミング同好会とすごい合同勉強会
プログラミング同好会とすごい合同勉強会プログラミング同好会とすごい合同勉強会
プログラミング同好会とすごい合同勉強会nemumu
 
Developers Summit 2014 「Play2/Scalaでドメイン駆動設計を利用した大規模Webアプリケーションのスクラム開発の勘所」
Developers Summit 2014  「Play2/Scalaでドメイン駆動設計を利用した大規模Webアプリケーションのスクラム開発の勘所」Developers Summit 2014  「Play2/Scalaでドメイン駆動設計を利用した大規模Webアプリケーションのスクラム開発の勘所」
Developers Summit 2014 「Play2/Scalaでドメイン駆動設計を利用した大規模Webアプリケーションのスクラム開発の勘所」Yoshimura Soichiro
 
アウトプットのすすめ
アウトプットのすすめアウトプットのすすめ
アウトプットのすすめKoichiHirai1
 
なぜか技術書典5で 3サークルの運営をやってた話
なぜか技術書典5で 3サークルの運営をやってた話なぜか技術書典5で 3サークルの運営をやってた話
なぜか技術書典5で 3サークルの運営をやってた話ota42y
 
TypeScript 型定義ファイルのある開発 TypeScript勉強会 VSハッカソン倶楽部
TypeScript 型定義ファイルのある開発 TypeScript勉強会 VSハッカソン倶楽部TypeScript 型定義ファイルのある開発 TypeScript勉強会 VSハッカソン倶楽部
TypeScript 型定義ファイルのある開発 TypeScript勉強会 VSハッカソン倶楽部Masahiro Wakame
 
mrubyで作るマイコンボード
mrubyで作るマイコンボードmrubyで作るマイコンボード
mrubyで作るマイコンボードkishima7
 
サブドメイン前提のチーム機能開発で踏んだ
OAuthの罠の話 in express
サブドメイン前提のチーム機能開発で踏んだ
OAuthの罠の話 in expressサブドメイン前提のチーム機能開発で踏んだ
OAuthの罠の話 in express
サブドメイン前提のチーム機能開発で踏んだ
OAuthの罠の話 in expressTakahiro YAMAGUCHI
 

What's hot (13)

あと一つプログラミング言語を
覚えたら死ぬ! 脳みそがパンクしそうな
あなたのための
nodeJSことはじめ
あと一つプログラミング言語を
覚えたら死ぬ! 脳みそがパンクしそうな
あなたのための
nodeJSことはじめあと一つプログラミング言語を
覚えたら死ぬ! 脳みそがパンクしそうな
あなたのための
nodeJSことはじめ
あと一つプログラミング言語を
覚えたら死ぬ! 脳みそがパンクしそうな
あなたのための
nodeJSことはじめ
 
括弧を使わないLispプログラミング
括弧を使わないLispプログラミング括弧を使わないLispプログラミング
括弧を使わないLispプログラミング
 
チーム開発積み重ね Rails Developers Meetup 2018 Day2
チーム開発積み重ね Rails Developers Meetup 2018 Day2チーム開発積み重ね Rails Developers Meetup 2018 Day2
チーム開発積み重ね Rails Developers Meetup 2018 Day2
 
Roslynで体験してみるC#スクリプト #cs_fukuoka
Roslynで体験してみるC#スクリプト #cs_fukuokaRoslynで体験してみるC#スクリプト #cs_fukuoka
Roslynで体験してみるC#スクリプト #cs_fukuoka
 
3日時間をもらったのでTypeScriptを触ってみた
3日時間をもらったのでTypeScriptを触ってみた3日時間をもらったのでTypeScriptを触ってみた
3日時間をもらったのでTypeScriptを触ってみた
 
プログラミング同好会とすごい合同勉強会
プログラミング同好会とすごい合同勉強会プログラミング同好会とすごい合同勉強会
プログラミング同好会とすごい合同勉強会
 
Developers Summit 2014 「Play2/Scalaでドメイン駆動設計を利用した大規模Webアプリケーションのスクラム開発の勘所」
Developers Summit 2014  「Play2/Scalaでドメイン駆動設計を利用した大規模Webアプリケーションのスクラム開発の勘所」Developers Summit 2014  「Play2/Scalaでドメイン駆動設計を利用した大規模Webアプリケーションのスクラム開発の勘所」
Developers Summit 2014 「Play2/Scalaでドメイン駆動設計を利用した大規模Webアプリケーションのスクラム開発の勘所」
 
アウトプットのすすめ
アウトプットのすすめアウトプットのすすめ
アウトプットのすすめ
 
なぜか技術書典5で 3サークルの運営をやってた話
なぜか技術書典5で 3サークルの運営をやってた話なぜか技術書典5で 3サークルの運営をやってた話
なぜか技術書典5で 3サークルの運営をやってた話
 
TypeScript 型定義ファイルのある開発 TypeScript勉強会 VSハッカソン倶楽部
TypeScript 型定義ファイルのある開発 TypeScript勉強会 VSハッカソン倶楽部TypeScript 型定義ファイルのある開発 TypeScript勉強会 VSハッカソン倶楽部
TypeScript 型定義ファイルのある開発 TypeScript勉強会 VSハッカソン倶楽部
 
mrubyで作るマイコンボード
mrubyで作るマイコンボードmrubyで作るマイコンボード
mrubyで作るマイコンボード
 
サブドメイン前提のチーム機能開発で踏んだ
OAuthの罠の話 in express
サブドメイン前提のチーム機能開発で踏んだ
OAuthの罠の話 in expressサブドメイン前提のチーム機能開発で踏んだ
OAuthの罠の話 in express
サブドメイン前提のチーム機能開発で踏んだ
OAuthの罠の話 in express
 
jQuery 対応ライブラリと TypeScript
jQuery 対応ライブラリと TypeScriptjQuery 対応ライブラリと TypeScript
jQuery 対応ライブラリと TypeScript
 

Viewers also liked

Boost.Graph入門
Boost.Graph入門Boost.Graph入門
Boost.Graph入門egtra
 
C++14 solve explicit_default_constructor
C++14 solve explicit_default_constructorC++14 solve explicit_default_constructor
C++14 solve explicit_default_constructorAkira Takahashi
 
error handling using expected
error handling using expectederror handling using expected
error handling using expectedAkira Takahashi
 

Viewers also liked (6)

Boost.Graph入門
Boost.Graph入門Boost.Graph入門
Boost.Graph入門
 
C++14 solve explicit_default_constructor
C++14 solve explicit_default_constructorC++14 solve explicit_default_constructor
C++14 solve explicit_default_constructor
 
error handling using expected
error handling using expectederror handling using expected
error handling using expected
 
Boost Tour 1_58_0 merge
Boost Tour 1_58_0 mergeBoost Tour 1_58_0 merge
Boost Tour 1_58_0 merge
 
C++1z draft
C++1z draftC++1z draft
C++1z draft
 
Boost tour 1_61_0 merge
Boost tour 1_61_0 mergeBoost tour 1_61_0 merge
Boost tour 1_61_0 merge
 

Similar to Start Concurrent

iOSエンジニアのためのScala入門
iOSエンジニアのためのScala入門iOSエンジニアのためのScala入門
iOSエンジニアのためのScala入門Masaya Dake
 
Eightにおけるエンジニア主導の取り組み
Eightにおけるエンジニア主導の取り組みEightにおけるエンジニア主導の取り組み
Eightにおけるエンジニア主導の取り組みSansan
 
20150207 何故scalaを選んだのか
20150207 何故scalaを選んだのか20150207 何故scalaを選んだのか
20150207 何故scalaを選んだのかKatsunori Kanda
 
PFPファシグラ(2009/07/03)
PFPファシグラ(2009/07/03)PFPファシグラ(2009/07/03)
PFPファシグラ(2009/07/03)nishikawa_makoto7
 
議論を描く技術「ファシリテーショングラフィック」
議論を描く技術「ファシリテーショングラフィック」議論を描く技術「ファシリテーショングラフィック」
議論を描く技術「ファシリテーショングラフィック」nishikawa_makoto7
 
HiroshimaR6_Introduction
HiroshimaR6_IntroductionHiroshimaR6_Introduction
HiroshimaR6_IntroductionSAKAUE, Tatsuya
 
楽しいプログラミング
楽しいプログラミング楽しいプログラミング
楽しいプログラミング明洋 庄司
 
“Septeni×Scala”勉強会#1資料_20150219_寺坂
“Septeni×Scala”勉強会#1資料_20150219_寺坂“Septeni×Scala”勉強会#1資料_20150219_寺坂
“Septeni×Scala”勉強会#1資料_20150219_寺坂ikuyaterasaka
 
Sphinxの環境構築が再現できない問題をDockerで解決してみた
Sphinxの環境構築が再現できない問題をDockerで解決してみたSphinxの環境構築が再現できない問題をDockerで解決してみた
Sphinxの環境構築が再現できない問題をDockerで解決してみたStudy Group by SciencePark Corp.
 
社内勉強会で読んだ本とか
社内勉強会で読んだ本とか社内勉強会で読んだ本とか
社内勉強会で読んだ本とかShinsuke Kuroki
 
プログラミング初心者に ECMAScript(JavaScript) を最初の言語として勧めるべき? Meguro es6
プログラミング初心者に ECMAScript(JavaScript) を最初の言語として勧めるべき? Meguro es6プログラミング初心者に ECMAScript(JavaScript) を最初の言語として勧めるべき? Meguro es6
プログラミング初心者に ECMAScript(JavaScript) を最初の言語として勧めるべき? Meguro es6健太 田上
 
技術書執筆のススメ 〜Only1なエンジニアになるためのセルフブランディング〜の発表資料
技術書執筆のススメ 〜Only1なエンジニアになるためのセルフブランディング〜の発表資料技術書執筆のススメ 〜Only1なエンジニアになるためのセルフブランディング〜の発表資料
技術書執筆のススメ 〜Only1なエンジニアになるためのセルフブランディング〜の発表資料Yoshiki Shibukawa
 
新・ReVIEWパーサについて
新・ReVIEWパーサについて新・ReVIEWパーサについて
新・ReVIEWパーサについてmasayoshi takahashi
 
俺も受託開発〜準委任契約によるふつうのソフトウェア開発〜
俺も受託開発〜準委任契約によるふつうのソフトウェア開発〜俺も受託開発〜準委任契約によるふつうのソフトウェア開発〜
俺も受託開発〜準委任契約によるふつうのソフトウェア開発〜Koichi ITO
 
軽量言語メインの 文系エンジニアだった自分が Scalaのシステム開発に携わることになった経緯 @shigemk2
軽量言語メインの 文系エンジニアだった自分が Scalaのシステム開発に携わることになった経緯 @shigemk2軽量言語メインの 文系エンジニアだった自分が Scalaのシステム開発に携わることになった経緯 @shigemk2
軽量言語メインの 文系エンジニアだった自分が Scalaのシステム開発に携わることになった経緯 @shigemk2Michihito Shigemura
 
heroku devcenter読書会 #1 by sendagaya.rb
heroku devcenter読書会 #1 by sendagaya.rbheroku devcenter読書会 #1 by sendagaya.rb
heroku devcenter読書会 #1 by sendagaya.rbNaoto Koshikawa
 
Contributing to Scala OSS from East Asia #ScalaMatsuri
 Contributing to Scala OSS from East Asia #ScalaMatsuri Contributing to Scala OSS from East Asia #ScalaMatsuri
Contributing to Scala OSS from East Asia #ScalaMatsuriKazuhiro Sera
 

Similar to Start Concurrent (20)

iOSエンジニアのためのScala入門
iOSエンジニアのためのScala入門iOSエンジニアのためのScala入門
iOSエンジニアのためのScala入門
 
Eightにおけるエンジニア主導の取り組み
Eightにおけるエンジニア主導の取り組みEightにおけるエンジニア主導の取り組み
Eightにおけるエンジニア主導の取り組み
 
20150207 何故scalaを選んだのか
20150207 何故scalaを選んだのか20150207 何故scalaを選んだのか
20150207 何故scalaを選んだのか
 
HiroshimaR5_Intro
HiroshimaR5_IntroHiroshimaR5_Intro
HiroshimaR5_Intro
 
PFPファシグラ(2009/07/03)
PFPファシグラ(2009/07/03)PFPファシグラ(2009/07/03)
PFPファシグラ(2009/07/03)
 
議論を描く技術「ファシリテーショングラフィック」
議論を描く技術「ファシリテーショングラフィック」議論を描く技術「ファシリテーショングラフィック」
議論を描く技術「ファシリテーショングラフィック」
 
HiroshimaR6_Introduction
HiroshimaR6_IntroductionHiroshimaR6_Introduction
HiroshimaR6_Introduction
 
Cppmix 01
Cppmix 01Cppmix 01
Cppmix 01
 
rust primer
rust primerrust primer
rust primer
 
楽しいプログラミング
楽しいプログラミング楽しいプログラミング
楽しいプログラミング
 
“Septeni×Scala”勉強会#1資料_20150219_寺坂
“Septeni×Scala”勉強会#1資料_20150219_寺坂“Septeni×Scala”勉強会#1資料_20150219_寺坂
“Septeni×Scala”勉強会#1資料_20150219_寺坂
 
Sphinxの環境構築が再現できない問題をDockerで解決してみた
Sphinxの環境構築が再現できない問題をDockerで解決してみたSphinxの環境構築が再現できない問題をDockerで解決してみた
Sphinxの環境構築が再現できない問題をDockerで解決してみた
 
社内勉強会で読んだ本とか
社内勉強会で読んだ本とか社内勉強会で読んだ本とか
社内勉強会で読んだ本とか
 
プログラミング初心者に ECMAScript(JavaScript) を最初の言語として勧めるべき? Meguro es6
プログラミング初心者に ECMAScript(JavaScript) を最初の言語として勧めるべき? Meguro es6プログラミング初心者に ECMAScript(JavaScript) を最初の言語として勧めるべき? Meguro es6
プログラミング初心者に ECMAScript(JavaScript) を最初の言語として勧めるべき? Meguro es6
 
技術書執筆のススメ 〜Only1なエンジニアになるためのセルフブランディング〜の発表資料
技術書執筆のススメ 〜Only1なエンジニアになるためのセルフブランディング〜の発表資料技術書執筆のススメ 〜Only1なエンジニアになるためのセルフブランディング〜の発表資料
技術書執筆のススメ 〜Only1なエンジニアになるためのセルフブランディング〜の発表資料
 
新・ReVIEWパーサについて
新・ReVIEWパーサについて新・ReVIEWパーサについて
新・ReVIEWパーサについて
 
俺も受託開発〜準委任契約によるふつうのソフトウェア開発〜
俺も受託開発〜準委任契約によるふつうのソフトウェア開発〜俺も受託開発〜準委任契約によるふつうのソフトウェア開発〜
俺も受託開発〜準委任契約によるふつうのソフトウェア開発〜
 
軽量言語メインの 文系エンジニアだった自分が Scalaのシステム開発に携わることになった経緯 @shigemk2
軽量言語メインの 文系エンジニアだった自分が Scalaのシステム開発に携わることになった経緯 @shigemk2軽量言語メインの 文系エンジニアだった自分が Scalaのシステム開発に携わることになった経緯 @shigemk2
軽量言語メインの 文系エンジニアだった自分が Scalaのシステム開発に携わることになった経緯 @shigemk2
 
heroku devcenter読書会 #1 by sendagaya.rb
heroku devcenter読書会 #1 by sendagaya.rbheroku devcenter読書会 #1 by sendagaya.rb
heroku devcenter読書会 #1 by sendagaya.rb
 
Contributing to Scala OSS from East Asia #ScalaMatsuri
 Contributing to Scala OSS from East Asia #ScalaMatsuri Contributing to Scala OSS from East Asia #ScalaMatsuri
Contributing to Scala OSS from East Asia #ScalaMatsuri
 

More from Akira Takahashi

More from Akira Takahashi (20)

Cpp20 overview language features
Cpp20 overview language featuresCpp20 overview language features
Cpp20 overview language features
 
Cppmix 02
Cppmix 02Cppmix 02
Cppmix 02
 
Modern C++ Learning
Modern C++ LearningModern C++ Learning
Modern C++ Learning
 
cpprefjp documentation
cpprefjp documentationcpprefjp documentation
cpprefjp documentation
 
Boost tour 1_61_0
Boost tour 1_61_0Boost tour 1_61_0
Boost tour 1_61_0
 
Boost tour 1.60.0 merge
Boost tour 1.60.0 mergeBoost tour 1.60.0 merge
Boost tour 1.60.0 merge
 
Boost tour 1.60.0
Boost tour 1.60.0Boost tour 1.60.0
Boost tour 1.60.0
 
Boost Tour 1_58_0
Boost Tour 1_58_0Boost Tour 1_58_0
Boost Tour 1_58_0
 
C++14 enum hash
C++14 enum hashC++14 enum hash
C++14 enum hash
 
Programmer mind
Programmer mindProgrammer mind
Programmer mind
 
Boost.Study 14 Opening
Boost.Study 14 OpeningBoost.Study 14 Opening
Boost.Study 14 Opening
 
Executors and schedulers
Executors and schedulersExecutors and schedulers
Executors and schedulers
 
Improvement future api
Improvement future apiImprovement future api
Improvement future api
 
C++14 variable templates
C++14 variable templatesC++14 variable templates
C++14 variable templates
 
C++14 relaxing constraints on constexpr
C++14 relaxing constraints on constexprC++14 relaxing constraints on constexpr
C++14 relaxing constraints on constexpr
 
C++14 binary literals
C++14 binary literalsC++14 binary literals
C++14 binary literals
 
Leaning random using Boost Random
Leaning random using Boost RandomLeaning random using Boost Random
Leaning random using Boost Random
 
C++14 Overview
C++14 OverviewC++14 Overview
C++14 Overview
 
Boost Tour 1.53.0
Boost Tour 1.53.0Boost Tour 1.53.0
Boost Tour 1.53.0
 
Boost Tour 1.53.0 merge
Boost Tour 1.53.0 mergeBoost Tour 1.53.0 merge
Boost Tour 1.53.0 merge
 

Start Concurrent