2013-04-01から1ヶ月間の記事一覧
C++メモリモデルにおける フェンス(fence) とatomic変数/非atomic変数の関係についてメモ。まとめ: C++11標準ライブラリが提供するstd::atomic_thread_fence関数*1は、atomic変数アクセスに対してのみ意味をもつ。通常の非atomic変数には直接的な影響を与…
プログラミング言語Javaにて Immutable なクラスを実装する場合、同フィールドのfinal修飾が必要な理由についてメモ。Immutable オブジェクトを用いる利点の一つとして、自動的*1に保証されるスレッド安全性(thread-safety)が挙げられる。このような Immutab…
プログラミング言語C/C++が提供するatomic変数*1とそのコピー操作に関するメモ。2個のatomic変数間における “atomicなコピー操作” は提供されない。通常は “atomic変数からの読込(load)”+“atomic変数への格納(store)” で代用すればよい。ただし、下記コード…
C標準ライブラリ提供の malloc関数 に対して、メモリ確保サイズ 0 指定時の振る舞いは処理系定義(implementation defined)。realloc, calloc, aligned_alloc*1でも同様。 2021-09-09追記:次期C2x(C23)標準ライブラリreallocではメモリ確保サイズ 0 の指定は…
Scott Meyers氏によるEffective C++11、並行性(Concurrency)関連の目次草案 The View from Aristeia: Draft TOC for EC++11 Concurrency Chapter より抄訳。 スレッド(thread)ではなく、タスク(task)を作ろう(物理的な"スレッド"ではなく、論理的な"タスク"…
プログラミング言語C#とメモリモデルに関するMSDNマガジンの記事。C#におけるvolatileキーワードの意味論と、各種アーキテクチャ(x86-x64/Itanium/ARM)への実装マッピングについて言及されている。 日本語訳:http://msdn.microsoft.com/ja-jp/magazine/jj86…
本文こちら→FizzBuzz化ストリーム - yohhoyの日記(別館)コード:https://gist.github.com/yohhoy/3370099
C++標準ライブラリの文字列型 std::string*1 を、C言語インタフェースへの文字列取得バッファとして使う方法についてメモ。本記事の内容はStack Overflowで見つけた質問と回答に基づく。2016-03-27追記:C++17(C++1z)対応版はこちら→文字列取得バッファとし…
C++11標準ライブラリstd::atomic_flag型について標準規格の要求*1通りロックフリー(lock-free)実装を行うにあたり、対象プロセッサに要求される命令セット・アーキテクチャ(ISA; Instruction Set Architecture)についてメモ。2021-03-09追記:C++20標準ライ…
C++11の文法上、ドット(.)を6連続で記述できる箇所が存在する。本記事の内容は C++11's six dots by Louis Brandy に基づく。2024-06-10追記:C++2c(C++26)以降に向けてT......を非推奨(deprecated)とする提案文書P3176が提出されている。同提案によらずT...…
C++1y(C++14)に向けて提案されているC++ Transactional Memory(C++TM)拡張に関して、gccでの実験的サポートを用いた既存アプリケーション(memcached*1)書き換えに関するレポート。C++TMドラフト仕様v1.1(→id:yohhoy:20120414)に基づく。 ペーパー:(PDF)…
Windows API提供の高分解能パフォーマンス計測QueryPerformanceCounter関数についてメモ。 簡易的に書いておきますと WinXPではQueryPerformance系はCPUクロックを返すので上記の現象が起こる WinVista以上でHPETが有効の時はQueryPerformance系はHPETより時…
プログラミング言語Javaにおけるsynchronized修飾されたメソッドでは、synchronizedはインタフェース*1(シグネチャ)の一部ではなく、そのメソッドの実装詳細に過ぎない。メソッドの実装に対する言及となるため、抽象メソッド(interfaceまたはclassのabstr…