yohhoyの日記

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

2013-04-01から1ヶ月間の記事一覧

C++のフェンス is 何

C++

C++メモリモデルにおける フェンス(fence) とatomic変数/非atomic変数の関係についてメモ。まとめ: C++11標準ライブラリが提供するstd::atomic_thread_fence関数*1は、atomic変数アクセスに対してのみ意味をもつ。通常の非atomic変数には直接的な影響を与…

Immutableクラスとfinalフィールドの関係

プログラミング言語Javaにて Immutable なクラスを実装する場合、同フィールドのfinal修飾が必要な理由についてメモ。Immutable オブジェクトを用いる利点の一つとして、自動的*1に保証されるスレッド安全性(thread-safety)が挙げられる。このような Immutab…

atomic変数間のatomicなコピー

C C++

プログラミング言語C/C++が提供するatomic変数*1とそのコピー操作に関するメモ。2個のatomic変数間における “atomicなコピー操作” は提供されない。通常は “atomic変数からの読込(load)”+“atomic変数への格納(store)” で代用すればよい。ただし、下記コード…

malloc(0)の振る舞い

C

C標準ライブラリ提供の malloc関数 に対して、メモリ確保サイズ 0 指定時の振る舞いは処理系定義(implementation defined)。realloc, calloc, aligned_alloc*1でも同様。 2021-09-09追記:次期C2x(C23)標準ライブラリreallocではメモリ確保サイズ 0 の指定は…

Effective C++11/Concurrency関連の目次草案

C++

Scott Meyers氏によるEffective C++11、並行性(Concurrency)関連の目次草案 The View from Aristeia: Draft TOC for EC++11 Concurrency Chapter より抄訳。 スレッド(thread)ではなく、タスク(task)を作ろう(物理的な"スレッド"ではなく、論理的な"タスク"…

記事"C#メモリモデルの理論と実践"

C#

プログラミング言語C#とメモリモデルに関するMSDNマガジンの記事。C#におけるvolatileキーワードの意味論と、各種アーキテクチャ(x86-x64/Itanium/ARM)への実装マッピングについて言及されている。 日本語訳:http://msdn.microsoft.com/ja-jp/magazine/jj86…

FizzBuzz化ストリーム

C++

本文こちら→FizzBuzz化ストリーム - yohhoyの日記(別館)コード:https://gist.github.com/yohhoy/3370099

文字列取得バッファとしてのstd::string

C++

C++標準ライブラリの文字列型 std::string*1 を、C言語インタフェースへの文字列取得バッファとして使う方法についてメモ。本記事の内容はStack Overflowで見つけた質問と回答に基づく。2016-03-27追記:C++17(C++1z)対応版はこちら→文字列取得バッファとし…

C++ atomic_flag実装のための最低要件

C++

C++11標準ライブラリstd::atomic_flag型について標準規格の要求*1通りロックフリー(lock-free)実装を行うにあたり、対象プロセッサに要求される命令セット・アーキテクチャ(ISA; Instruction Set Architecture)についてメモ。2021-03-09追記:C++20標準ライ…

C++11と6個のドット

C++

C++11の文法上、ドット(.)を6連続で記述できる箇所が存在する。本記事の内容は C++11's six dots by Louis Brandy に基づく。 template <class... T> void f(T......); // !? これは下記コードと等価。C++可変長引数テンプレートのfunction parameter packを表すellipsis</class...>…

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

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

QueryPerformanceCounter今昔

Windows API提供の高分解能パフォーマンス計測QueryPerformanceCounter関数についてメモ。 簡易的に書いておきますと WinXPではQueryPerformance系はCPUクロックを返すので上記の現象が起こる WinVista以上でHPETが有効の時はQueryPerformance系はHPETより時…

synchronizedは実装詳細である

プログラミング言語Javaにおけるsynchronized修飾されたメソッドでは、synchronizedはインタフェース*1(シグネチャ)の一部ではなく、そのメソッドの実装詳細に過ぎない。メソッドの実装に対する言及となるため、抽象メソッド(interfaceまたはclassのabstr…