検索

ホームページ  >  に質問  >  本文

redis - memcache のアトミック操作を理解するにはどうすればよいですか?

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

大家讲道理大家讲道理2784日前1102

全員に返信(1)返信します

  • 某草草

    某草草2017-05-31 10:38:15

    質問者さんは考えすぎです。 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
  • キャンセル返事