掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
CMutex いまいちわかっていません (ID:60842)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
> m_pMain1が持っているリソースのプールから使用可能なリソースを配給する処理です。 配給するリソースの排他が必要なケースと 配給する機能をもつものの排他が必要なケースとで "何を排他すべきか"が変わります。 個人的にですが、 「排他するもの自体に排他する機能を持たせる」 を推奨します。 MutexをはじめとしたWindowsの持つ排他オブジェクトは、 単に排他を実現する機能を提供するだけです。 「何をどのタイミングでいつまで排他するか?」については 設計の段階できちんと精査しておかないと 後々思わぬところでデッドロックに陥ったりしがちです。 気をつけてください。 「排他するもの自体に排他する機能を持たせる」の例を挙げておきます。 例1)長時間または大域的なロックが必要な場合 class ExclusiveLockObject { public: // ロックする bool Lock() { ... } // ロックを開放する void Unlock() { ... } // 何かする void Perform() { ... } }; void Proc(ExclusiveLockObject* obj) { obj->Lock(); // 何かする obj->Perform(); obj->Unlock(); } 例2)短時間または局所的なロックが必要な場合 class ExclusiveLockObject { protected: // object自体をロックする bool Lock() { ... } // ロックを開放する void Unlock() { ... } public: // 何かする void Perform() { Lock(); ... Unlock(); } }; void Proc(ExclusiveLockObject* obj) { // 何かする obj->Perform(); }
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2020 Takeshi Okamoto All Rights Reserved.