C ++マルチスレッド・サーバー・サイド・プログラミング()

複数のスレッドが同じオブジェクトにアクセスすると、スレッドの安全性がある
複数のスレッドが同じオブジェクトにアクセスする場合、または任意の発信者で、実行時にこれらのスレッドの環境下で、代替スケジューリングと実行を考慮していないと、追加の同期を必要としない場合、オブジェクトの振る舞いを呼び出して、他のアクションは、正しい結果を得ることができ、そのオブジェクトは、スレッドセーフです。

セクション1.1.3反例いわゆるスレッドセーフな、各オブジェクトがそれ自身のカウンタミューテックスを有し、したがって異なるオブジェクトロック競合を構成しない、ロック競合
があれば、同じカウンタにアクセスするための対象とならない限り、問題ではない行っている間、ありますそれらは異なるオブジェクトである、独自のロックを持っているが、別の条件の下で、カウンタが動的にポインタを介して作成し、アクセスされた場合、それがある場合に、オブジェクトの前で競合状態が破壊され、ポインタが同じロックにアクセスするためにあるため、そのです

オブジェクトの作成1.2は単純である
建設中のこのポインタを明かすするだけでなく、要件を行うには、オブジェクトのコンストラクタスレッドセーフれる
•Doが、コンストラクタ内のすべてのコールバックを登録していない。
•DOはパスがスレッド間でオブジェクトのコンストラクタでこれを入れません。
•でも、コンストラクタの最後の行では動作しません。

彼は別のスレッド内の他のオブジェクトに漏洩した場合、それはこの半完成オブジェクトを訪問することが可能である。この初期化が完了していない、危険な、望ましくない、オブジェクトのコンストラクターにあることを
、その後、許容可能な練習はコールバック関数の使用を構築し、必要とすることですそれは再度呼び出すことができます定義されているメンバ関数を使用します

class Foo : public Observer
{
public:
Foo();
virtual void update();
// 另外定义一个函数,在构造之后执行回调函数的注册工作
void observe(Observable* s)
{
s->register_(this);
}
};
Foo* pFoo = new Foo;
Observable* s = getSubject();
pFoo->observe(s); // 二段式构造,或者直接写s->register_(pFoo);

1.3破壊ハード
だけ実行した後に1を保証することができますミューテックス機能

1.3.2 mutexlockは、このクラスの他のメンバーにデータを読み書きするために使用することができ、同期されている、それはデストラクタの安全を保護することはできません
最も長命オブジェクトのmutexlockメンバー、およびデストラクタのアクションがで起こると言うことができるように、これはあるがオブジェクトが殺された後、破壊は、ロックが破壊された場合に発生します

shared_ptrとunique_ptrを二種類のスマートポインタを含みます、

1.4スレッドセーフ観察
同じオブジェクト2つの2ポインタが異なるスレッドに配置されているヒープへのポインタのポインタをダングリング、スレッドAは、ポインタオブジェクトは、それがダングリングポインタを見るであろう破壊されることにより、想定される2

(これはあまり色は幸せああXDでなければならないものよりも、すべてのガベージコレクションの原理である)が表示されない密かにされている他人の破壊の場合には最高のポインタを確保するために、
参照カウント:良い解決策
図1および図2のポインタ12がオブジェクトに、オブジェクトに変換され、オブジェクトがターゲット・オブジェクトの中央を指す2人のメンバー、およびポインタとカウンタを有し
、そのデストラクタ参照番号低減オフポインタは、参照数が0ノウハウになったとき、あなたは安全に破棄することができます
参照はスマートポインタにそれを数えていないこと!

1.6 好使! shared_ptr/weak_ptr

shared_ptrの制御対象の生涯
のweak_ptrは、オブジェクトの有効期間を制御していないが、彼は、オブジェクトがまだ生きているかどうかを知っていた
ロックなしのアトミック操作でweak_ptrをshared_ptrの/

ミューテックスは、読み書きロックと
読み書きロックを:読者は、同時に複数読むことができます。作家は、相互に排他的でなければなりません。リーダライタに優先して
ミューテックス:1つのスレッドだけが他のスレッドを持つことができますミューテックスを待つ必要があります

公開された44元の記事 ウォンの賞賛9 ビュー3380

おすすめ

転載: blog.csdn.net/puying1/article/details/100185473