タグ

排他制御に関するareyoukicking2のブックマーク (3)

  • Singletonパターンとマルチスレッド - C++Builder好きの秘密基地

    マルチスレッドを考慮してSingletonを実装するとき、アクセスする度にTCriticalSectionを使ってオブジェクトの中身を保護してやらないといけないのかな・・・。 class CSingleton { private: CSingleton(){} CSingleton(const CSingleton& obj) {} virtual ~CSingleton(){} public: static CSingleton& getInstance(); static void release(); private: static CSingleton* s_pInstance; }; CSingleton& CSingleton::getInstance() { if (s_pInstance == NULL) { // シングルトンオブジェクトの初期化 // TCritical

    Singletonパターンとマルチスレッド - C++Builder好きの秘密基地
  • TOCTOU攻撃とは。。。 - ウィリアムのいたずらの開発日記

    ウィリアムのいたずらが、街歩き、べ物、音楽等の個人的見解を主に書くブログです(たま~にコンピューター関係も) あした第三回のC/C++セキュアコーディングハーフデイキャンプがあるのに、 今ごろ第二回のC/C++セキュアコーディングハーフデイキャンプの話をするのも なんなんだけど、一個かいてなかったので、今日書きます。 残ってた内容は、TOCTOU攻撃と、デッドロック攻撃 ■TOCTOU攻撃 っていうか、そもそも、TOCTOU攻撃って何?っていう話だけど、 TOC=Time Of Check チェック TOU=Time Of Use  使用 このチェックしているのと使用しているのの時間差(競合ウィンドウ)を利用して、わるさを仕掛けるというもの たとえば、 (1)ファイルチェック (2)存在していたら、Openして読み込み もし、このとき、(1)でどんなにすばらしいチェックをしていたとしても

  • セマフォ - ファイヤープロジェクト

    共有メモリの話題に入る前の準備としてセマフォについて記述する. 同期の問題 セマフォとは セマフォを使ってみる セマフォと共有メモリ 同期の問題二つのプロセス(もしくはスレッド)A,Bが共有する変数xがあったとする.そしてA,B両者がxに1を足すとする.xが0なら処理後のxの状態が2になっていることを期待してみる. Aがx(=0)の値を読み込む. Aがx(=0)に1を足してそれをxに書き込む. Bがx(=1)の値を読み込む. Bがx(=1)に1を足してそれをxに書き込む. この時x=2. 上は「たまたま」正常なタイミングで動作した場合である.もしかしたら以下の状況なるかもしれない. Aがx(=0)の値を読み込む. Bがx(=0)の値を読み込む. Aがx(=0)に1を足してそれをxに書き込む. Bがx(=0)に1を足してそれをxに書き込む. この時x=1. 期待に反してx=1となってしまった

  • 1