4つの方法のマルチスレッドの同期

マルチスレッドプログラムでは、同期はリソースにアクセスするための一つのスレッドだけを許可するように一定の期間内を意味します。そして、この時間の間に、私たちは、他のスレッドがリソースへのアクセスはできません。ミューテックス(ミューテックス)、条件変数(状態変数)、読み書きロック(リーダライタロック)、セマフォ(セマフォ)をリソースを同期させること。

 

1. ミューテックス(ミューテックス)

ミューテックスは、ミューテックス、最も単純な同期化機構です。複数のプロセス(スレッド)が同時に重要なゾーン、重要なリソースへの排他的アクセスの保護に入り、クリティカルエリアを保護するためになるように、他のプロセス(スレッド)を防ぐため、ミューテックス、ミューテックスロックにアクセスすることができます。

2. 条件変数(状態変数)

複数のプロセス(スレッド)のための条件変数は、同じイベントを待ち、その後、何かにダウンバックル。簡単な例を見てみましょう:

生産者と消費者のモデル:
生産者は、消費者が商品を消費する財を生産するためのより多くの消費者が待機します。プロデューサーがアイテムを作成するときは、すべての消費者に通知することができます(もちろんのを、あなたはまた、消費者に一つだけ待機を知らせることができます)---財を消費するために行くことができます。そして、消費財のためのより多くの競争が速い方が消費アイテムを得ることができる人、行きます。この製品が消費されている場合は、消費者が生産者を待ちます。これは、シーンに似ています。
ミューテックス、条件変数は、一緒に動作するように協力しなければなりません。なぜ?生産された財の生産者が重要なリソース、公共資源であるため、つまり、すべてのプロセスとスレッドを同時に使用することができる唯一のピックアップする消費者を可能にします。その後、彼らは重要なリソースを保護するためのミューテックスを使用しています。

3. ライト・ロック(リーダライタロック)

読み書きデータベースなどのマルチリード動作、小の書き込み動作に使用するのに適したロック。読み書きロックロックは、同時に多くのことを追加することができますが、書き込みロックは相互に排他的です。プロセスやスレッドが書き込みにすると、読み取り処理の全てを待つか、その読み取りロックパーティーを書くことができます解放するスレッドなければなりません。何度データベースはいくつかの照会を行うことがあります。

4. セマフォ(セマフォ)

生産者 - 消費者モデルでは、タスクの数のレコードが、あなたは何をするセマフォを使用することができます。条件変数のバンドが数えて、それを理解することができます。セマフォの値が0未満の場合、作業プロセスやスレッドは、商品の到着を待ってブロックされています。生産者がアイテムを生成する際に、信号の大きさが増分されます。これは、彼らがアイテムを戦って行く、セマフォ遮断するプロセスまたはスレッドに目を覚ますだろう。

 

参考:

リンクします。https://www.jianshu.com/p/eca71b7fda2c

おすすめ

転載: www.cnblogs.com/zkfopen/p/11232153.html