しらいとブログ

ネットで検索してもなかなか出てこないIT情報を独自にまとめています

【C++11/14】値か関数を受け取り評価する関数

事の始まりはC++で遅延評価の必要性に駆られたことでした。 // 時間のかかる処理 int n = sum(list); // testの中でnが使われなければ処理が無駄になる test(n); そこで値の代わりに関数を渡し、必要になったときに評価してもらう方法を取りました。 auto f …

「exit code -1073741515」=DLLが見つからない

Windowsプログラミングにおいて、開発環境では問題なく動くプログラムが本番環境で動かない時によくあるのが「exit code -1073741515」です。あるいは16進数の「exit code FFFFFFFFC0000135」だったり、16進数で16bitの「exit code C0000135」だったりします…

(2015年)最新のMinGW(GCC)のダウンロード

MinGWの公式サイト(のsourceforge)で配布されているGCCは、2013年に公開された4.8.1で更新が止まっています。 最新バージョンはMinGW-w64(のsourceforge)からダウンロードできます。(64bit版だけでなく、32bit版も配布しています。) 例えば4.8.5が欲し…

C++11のmemory_orderの使い分け (4)

前回まででアトミック変数とフェンスの memory_order の基本的な使い方を全て解説しました。今回はメモリバリアを減らして高速化する手法について解説します。ただし、consume を使った高速化に関しては扱いません。また、今回の内容はあくまでメモリバリア…

C++11のmemory_orderの使い分け (3)

2014/10/29 20:40 誤解を招きそうな部分があったので修正しました。修正場所は脚注から辿れます。 前回はアトミック変数に memory_order を指定した場合について解説しました。今回はフェンスで指定した場合について解説します。

C++11のmemory_orderの使い分け (2)

2014/10/23 12:20 一部用語を修正しました。*1*2 前回はメモリバリアで保証できる範囲について説明しました。今回はメモリバリアの使い方を説明します。 *1:read-modify-write アルゴリズム → read-modify-write 命令 *2:読み込み → 読み取り

C++11のmemory_orderの使い分け (1)

C++11で高速な同期手法としてアトミック変数やメモリフェンス(普通はメモリバリアと呼ぶ)が追加されました。 これらの命令では memory_order を指定できるのですが、違いが分かりづらいのでまとめてみました。 なお、正確な名前はmemory_order_relaxed、me…