ホームページ >毎日のプログラミング >PHPの知識 >「スレッド同期の原則」を理解するのに役立つ 2 つの例

「スレッド同期の原則」を理解するのに役立つ 2 つの例

旺崽他爸
旺崽他爸オリジナル
2021-01-19 17:30:15364ブラウズ

複数のスレッド (またはプロセス) が、同じ特定の非リエントラント プログラム コード ブロック (クリティカル セクションと呼ばれる) を実行する必要があるため、適切な同時実行制御同期テクノロジが必要です。そうしないと、競合状態が発生する可能性があります。 ️リソース)の操作では、重要なリソースを保護し、一般的な使用時の混乱を避けるために、何らかの技術的手段を使用する必要があります。

簡単な例を挙げると、Alipay が @wanchai さんに ?1RBM を送金します。このとき、彼のウォレットにはすでに ?1RBM が送金されています。アカウントも同時に入力されるため、非スレッド同期システムは次の操作を実行します:

非スレッド同期の最終的なウォレット残高は 2 元ですが、これは明らかに間違っています。追加した後見てみましょう。スレッドの同期:

「スレッド同期の原則」を理解するのに役立つ 2 つの例

最後に、ウォレットの残高は 3 元です。 では、具体的な方法は何でしょうか?

「スレッド同期の原則」を理解するのに役立つ 2 つの例

ここでもっと一般的な例を使用することもできます:

「スレッド同期の原則」を理解するのに役立つ 2 つの例

最初はこの交差点に適していました。誰もが毎回満足しています。この交差点に行きますが、徐々にこの道路を知る人が増えましたが、誰もが無秩序に交差点を通過したため、ある日、道路施設の担当者が信号機を設置しました。この方向の青信号が点灯している場合、この方向の人々は前進できます

  • 一部の車両は、ここに来るときに必ずしも交差点を横断する必要はありません。 、だから責任を持ってください 道路インフラ担当者は、直進車両が方向転換するために赤信号を待たずに U ターン車両が通過できるように U ターンレーンを設計しました。これは読み書きロックです

  • 近くの倉庫で火災が発生しました。消防車が方向転換車線を占拠しました(占有されていたリソースは解放されず、他の車両は自力で通過できました)。消防団が通過するまで、ここがスピンロックです

  • この交差点は時間の経過とともに交通量が増加し、午前中に交通規制が始まりました。これは、「条件変数」を追加するためのものです
  • スピンロックなど、いくつかの例はそれほど正確ではないかもしれませんが、これを通じて。この例を実際の理論と組み合わせると、メモリ内の各ロックの特性をすぐに理解できます。

以上が「スレッド同期の原則」を理解するのに役立つ 2 つの例の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。