yohhoyの日記

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

2014-07-01から1ヶ月間の記事一覧

メソッドthrows節への非検査例外指定

プログラミング言語Javaの非検査例外(unchecked exception)とthrows節の関係についてメモ。メソッドthrows節で非検査例外を指定することは可能だが、メソッド呼び出し側でのコンパイル時チェックは行われない。*1 void func() throws NullPointerException {…

Initialization On Demand Holder idiom

プログラミング言語Javaにおけるスレッドセーフなシングルトン遅延初期化イディオム。Double-checked lockingイディオムと異なり*1、厳格なメモリモデルが定義されないJava 1.4以前でも正しく動作する事が保証されている。 public class Foo { private Foo()…

危険な自己ムーブ代入:x = std::move(x)

C++

C++標準ライブラリ提供クラスのムーブ代入演算子による自己代入操作について。2019-09-02追記:C++17現在はLWG 2468によって、自己ムーブ代入操作による未定義動作(undefined behavior)は回避される。ただし別途規定のない場合、自己ムーブ代入後は “有効だ…

特殊メンバ関数とコンパイラによる暗黙宣言

C++

プログラミング言語C++における特殊メンバ関数(special member functions)のユーザ宣言/コンパイラ暗黙宣言に関するメモ。本記事の内容はACCU 2014でのHoward Hinnant氏プレゼン(PDF) "Everything You Ever Wanted To Know About Move Semantics (and then …

Intel TSX拡張命令を利用したスピンロック

TBB

Intel TBB 4.2以降で提供されるIntel Transactional Synchronization Extensions(TSX)拡張命令実装によるミューテックス同期プリミティブ。基本はスピンロック(spin_mutex)として動作し、対応プロセッサの場合はTSX拡張命令が利用される。*1 クラス 機能 spe…