2014-07-01から1ヶ月間の記事一覧
プログラミング言語Javaの非検査例外(unchecked exception)とthrows節の関係についてメモ。メソッドthrows節で非検査例外を指定することは可能だが、メソッド呼び出し側でのコンパイル時チェックは行われない。*1 void func() throws NullPointerException {…
プログラミング言語Javaにおけるスレッドセーフなシングルトン遅延初期化イディオム。Double-checked lockingイディオムと異なり*1、厳格なメモリモデルが定義されないJava 1.4以前でも正しく動作する事が保証されている。 public class Foo { private Foo()…
C++標準ライブラリ提供クラスのムーブ代入演算子による自己代入操作について。2019-09-02追記:C++17現在はLWG 2468によって、自己ムーブ代入操作による未定義動作(undefined behavior)は回避される。ただし別途規定のない場合、自己ムーブ代入後は “有効だ…
プログラミング言語C++における特殊メンバ関数(special member functions)のユーザ宣言/コンパイラ暗黙宣言に関するメモ。本記事の内容はACCU 2014でのHoward Hinnant氏プレゼン(PDF) "Everything You Ever Wanted To Know About Move Semantics (and then …
Intel TBB 4.2以降で提供されるIntel Transactional Synchronization Extensions(TSX)拡張命令実装によるミューテックス同期プリミティブ。基本はスピンロック(spin_mutex)として動作し、対応プロセッサの場合はTSX拡張命令が利用される。*1 クラス 機能 spe…