タグ

ブックマーク / flalin.hatenablog.com (1)

  • C++11 std::unique_lock の用例「ロック付きスマートポインタ」 - flatlineの日記

    Mutexロックの最大の弱点は合成不可能なこと.(Java用語だが)あるクラスにsynchronizedメソッドが2つあったとき,それを順々に呼び出すような関数は一般にスレッドセーフでない.複数のメソッドに渡るクリティカルセクションについて考えるのはときどきめんどいことがある. そこでスマートポインタ(または一般に資源へのハンドル)をmutexのRAII的ラッパとくっつけてしまうことを考えた.そのスマポがローカル変数としてアクセスできる間は資源は排他的に利用可能.実際,関数の返り値の型をスマートポインタとすることによって,「このオブジェクトのメモリは中で新たにnewされたものだから,後でdeleteせにゃいかんよ」というメッセージを型に込める慣例は古くから(一部で)行われていた.これはそれをmutexロックに敷衍しようという試み. class UniqResource { private:

    C++11 std::unique_lock の用例「ロック付きスマートポインタ」 - flatlineの日記
    xef
    xef 2013/02/13
  • 1