yohhoyの日記

技術的メモをしていきたい日記

C++1y

async関数launch::asyncポリシーとfutureのちょっと特殊な動作(続きの続き)

async関数launch::asyncポリシーとfutureのちょっと特殊な動作, 同(続き)の続き。 async関数動作でlaunch::asyncポリシーが選択された場合のみ、futureオブジェクトのデストラクタではasync関数が作成した新スレッド完了を待機する。(暗黙的にスレッドjoi…

新しい並列for構文のご提案

本文こちら→Boost.勉強会 #14に参加しました - yohhoyの日記(別館)スライド資料:http://www.slideshare.net/yohhoy/boostjp14-parfor-20140301-31781446

task_groupコンセプト

C++1yに向けた並列プログラミングモデルについてメモ。(PDF)N3711 Task Groups As a Lower Level C++ Library Solution To Fork-Join Parallelismにて、タスク並列処理の基本構成要素となるtask_groupコンセプトが提案されている。なお、同名クラスはIntel T…

C++トランザクショナルメモリ拡張まとめ(N3718)

プログラミング言語C++のトランザクショナルメモリ(TM; Transactional Memory)拡張に関するドラフト仕様v1.1(→id:yohhoy:20120414)からの差分メモ。本記事の内容は、2013年8月付けの(PDF)N3718 Transactional Memory Support for C++に基づく。 新キーワー…

可変長配列の正式名称

C99で導入された、およびC++14導入予定*1となっている「可変長配列」の言語仕様上の正式名について。2016-04-02追記:2016年3月のWG21会合にてArray Extension TSは取り下げられた。JTC1/SC22/WG21 (PDF)N4586, EWG Motions 2参照。2013-10-19追記:C++14 Dr…

memcachedへのC++TM適用事例レポート

C++1yに向けて提案されているC++ Transactional Memory(C++TM)拡張に関して、gccでの実験的サポートを用いた既存アプリケーション(memcached*1)書き換えに関するレポート。C++TMドラフト仕様v1.1(→id:yohhoy:20120414)に基づく。 ペーパー:(PDF)Transac…

OpenMPのC++言語統合提案

C++1yに向けた並列プログラミングモデルについてメモ。(PDF)N3530 Leveraging OpenMP infrastructure for language level parallelisationにて、OpenMP実装インフラをC++言語機能として統合する提案がなされている。初期提案のため骨子のみ。OpenMPは主要な…

Logical XOR operator Revival

C++ Evolution Working Group(EWG)に「論理XOR演算子^^」なるものが提案(?)されているが…C++ Standard Evolution Active Issues List, #37. Logical xor operatorより一部引用。 (snip) This has traditionally been dismissed as un-necessary, as it is…

latch, barrier同期プリミティブ

C++1yに向けて提案されている同期プリミティブについてメモ。N3600 C++ Latches and Barriersに基づく。 latchプリミティブ Nスレッド間でのタスク終了待ちに利用する。機能的にはJava 5以降のCountDownLatch、C# 4.0以降のCountdownEventが相当。 barrierプ…

C++1yへの並列アルゴリズムライブラリ提案

C++1yに向けた並列プログラミングモデルについてメモ。(PDF)N3429 A C++ Library Solution to Parallelismにて、いくつか並列アルゴリズムの追加提案がなされている(言語コア機能の拡張提案は含まない)。初期提案のため概要レベル。これら並列アルゴリズム…

async関数launch::asyncポリシーとfutureのちょっと特殊な動作(続き)

async関数launch::asyncポリシーとfutureのちょっと特殊な動作の後日談。 async関数動作でlaunch::asyncポリシーが選択された場合のみ、futureオブジェクトのデストラクタではasync関数が作成した新スレッド完了を待機する。(暗黙的にスレッドjoinが行われ…

C++ Stream Mutex

C++標準ライブラリのストリームに対する並行入出力操作において、明示的ロックを用いない排他制御の方法について。2017-11-21追記:C++2a(C++20)標準ライブラリに向けて、同期化出力ストリームが採択された(→id:yohhoy:20171121)。本記事で取り上げたN3395…

Reader-Writerロックの実装

C++11標準ライブラリのスレッドサポートを利用して実装されたReader-Writerロック(Shared/Upgradeロック)。Boost Software License。Howard Hinnant氏の記事Handling mutexes in C++に詳しい解説あり。 http://home.roadrunner.com/~hinnant/mutexes/share…

C++ Transactional Memory言語拡張の紹介

本文こちら→Boost.勉強会 #10 に参加しました - yohhoyの日記(別館)スライド資料:http://www.slideshare.net/yohhoy/boostjp10-tm-20120728

GCC 4.7.0のTransactionalMemoryサポート

GCC 4.7から実験的サポートが始まったTransactional Memory(TM)についてメモ。主に"Draft Specification of Transactional Language Constructs for C++, Version 1.1"*1で定義される拡張キーワードのsyntaxサポート確認を行った。 TMサポートの有効化 GCC 4…

C++トランザクショナルメモリ拡張まとめ(ドラフト仕様v1.1)

プログラミング言語C++のトランザクショナルメモリ(TM; Transactional Memory)拡張に関するざっくりまとめメモ。本記事の内容は、2012年4月現在の最新ドラフト仕様“Draft Specification of Transactional Language Constructs for C++, Version 1.1”(→id:yo…

(翻訳)C++トランザクシショナル言語構成要素のドラフト仕様 V1.1 [§1-2のみ]

元文書:Transactional Memory Specification Drafting Group, "Draft Specification of Transactional Language Constructs for C++"*1, Version 1.1, 2012/2/3訳出メモ: 次世代C++1y標準のトランザクショナルメモリに関するドラフト仕様を一部翻訳。[§1.…