redis - memcache のアトミック操作を理解するにはどうすればよいですか?
大家讲道理
大家讲道理 2017-05-31 10:36:15
0
1
1095

Memcache の追加はアトミックです。つまり、複数のプロセスが追加操作を同時に実行しており、競合状態は発生しません。これは、追加によって同時実行性が生成されないことを意味しますか? ?

大家讲道理
大家讲道理

光阴似箭催人老,日月如移越少年。

全員に返信(1)
某草草

質問者さんは考えすぎです。 add の原子性のおかげで、同時実行性が保証されます。

基礎となる概念について十分に理解していません。

操作 同時実行性 は無意味であると言います。 リーリー

上記のステートメントはアトミックですか?上記のステートメントは同時に実行できますか?

リーリー

上のものはどうでしょうか?

リーリー

これはどうですか?

同時並行はできないのですか?いいえ。 + 是原子性的,那么 +

私たちは、

アトミックな操作が存在しない世界を構想しています。

最も単純な

の例を見てみましょう: i++

i 的值是 4

現時点では、2つのスレッド

が同時にを実行しています。 (同時というのが並行性と呼ばれるものだと仮定しましょう) i++

どのように実装されていますか?

i++

    まず i の値を取得します。
  • iの値に1を加えます
  • 最終結果は i
  • に保存されます

  • この時点で i++ がアトミックでない場合、2 つのスレッドがさまざまな実行順序で表示され、誤った結果が得られます。

    最初のスレッドは i の値 4 を取得しました
  • 2 番目のスレッドは i の値 4 を取得しました
  • 最初のスレッドは i に 1 を加えて 5 を取得します
  • 2 番目のスレッドは i に 1 を加えて 5 を取得します
  • 最初のスレッドは 5 を i に格納します
  • 2 番目のスレッドは 5 を i
  • に保存します

  • 最終結果を取得します。私は 5 です。明らかにこの結果は間違っています。

しかし、i++ はアトミックであるため、この状況には遭遇していません。

つまり、原子性は同時実行できないということですか?はい。

気にする人

ユーザーの観点から見ると、

操作はアトミックである必要があります。私たちが同意しているのは

システムaddであり、運用ではありません。

いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート