タグ

2012年6月21日のブックマーク (2件)

  • C++0x時代の Double-Checked Locking - yamasaのネタ帳

    今回は "Double-Checked Locking" (以下DCL)というマルチスレッドプログラム向けのイディオムを例にして、C++0xの(低レイヤ向け)マルチスレッド機能の利用方法を紹介してみます。 DCLとは、「ロック→条件判定」というロジックを「条件判定→ロック→(再度)条件判定」と書き換えるイディオムで、主に遅延初期化などの処理においてロックのオーバーヘッドを減らすために用いられます。DCLはシンプルかつ効果の高いイディオムだったので、一時期もてはやされました。ところが、DCLはコンパイラやCPUによるリオーダーの影響により正しく動作しない場合があることがわかったため(参考1、参考2)、今ではアンチパターンと呼ばれることすらある始末です。 しかし、DCLの問題点は、メモリモデルに関する知識があまり知られていなかったことと、プログラミング言語の仕様でメモリモデルが正しく定義されて

    C++0x時代の Double-Checked Locking - yamasaのネタ帳
    yugui
    yugui 2012/06/21
  • 文学でランダムウォークの可視化「我輩は猫である」(今回はリベンジ編) - 蟻の実験工房(別館ラボ)

    前回の記事で失敗したと語っていた文学でランダムウォークの可視化「我輩はである」のリベンジ編です。 twitterでikeさんより - @iketakan: @antlabo 例えば文字ごとの一般的な頻出度で移動量を重み付けするとか、ロジックを見直せばいい結果になりそうな気もします。今後の改良を期待しています! - なんて期待されたものだから、期待に応えて今回はリベンジ編です。 前回からロジックを修整して文字ごとの移動量の重み付けロジックを追加しています。 ただ「一般的な文字の出現度」なんて一般的な統計データなんて無いので、今回は同一文章内での出現度により移動量の重み付けをしています。 同一文章内で出現頻度が多い→移動量が少ない 同一文章内で出現頻度が少ない→移動量が多い まずは出現頻度のデータ取りです。 我輩はであるの場合はこんな感じ このデータを元に文字ごとの重み付けをした結果のラン

    文学でランダムウォークの可視化「我輩は猫である」(今回はリベンジ編) - 蟻の実験工房(別館ラボ)