Rumah  >  Soal Jawab  >  teks badan

redis - Bagaimana untuk memahami operasi atom memcache?

Tambahan Memcache adalah atom, iaitu, berbilang proses menjalankan operasi tambah pada masa yang sama, dan tiada keadaan perlumbaan akan berlaku Adakah ini bermakna penambahan tidak akan menjana serentak? ?

大家讲道理大家讲道理2717 hari yang lalu1052

membalas semua(1)saya akan balas

  • 某草草

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

    Penyoal terlalu berfikir. Justru kerana keatoman add kita boleh yakin dengan kesesuaian. add 的原子性,我们才能够放心的并发。

    你对底层概念了解的不够。

    我们说一个操作并发是没有意义的。

    a = b + c;
    

    上面的语句是原子性的吗?上面的语句可以并发吗?

    a = getValueOfB() + getValueOfC();
    

    上面的呢?

    a = add(getValueOfB(), getValueOfC());
    

    这个呢?

    + 是原子性的,那么 + 就不能并发了吗?不是。

    我们设想一个任何操作都不是原子性的世界。

    拿一个最简单的 i++ 举例吧:

    i 的值是 4

    此时 2 个线程同时执行 i++。(姑且认为同时就是你说的并发吧)

    i++ 是怎么执行的呢?

    • 首先要获取 i 的值。

    • 把 i 的值加 1

    • 最终结果存入 i

    此时如果 i++ 不是原子性的,那么 2 个线程就会出现 各种执行顺序,从而得到错误的结果。

    • 第一个线程取得了 i 的值是 4

    • 第二个线程取得了 i 的值是 4

    • 第一个线程把 i 加 1,得到 5

    • 第二个线程把 i 加 1,得到 5

    • 第一个线程把 5 存入 i

    • 第二个线程把 5 存入 i

    得到最终结果,i 是 5。显然这个结果是错误的。

    但是我们却没有遇到过这种情况,因为 i++ 是原子性的。

    那么原子性的是不是就无法并发了?是的。

    who care

    从使用者角度讲,add Anda tidak cukup mengetahui tentang konsep asas. Kami mengatakan bahawa konkurensi

    operasi 🎜 tidak bermakna. 🎜 rrreee 🎜Adakah pernyataan di atas bersifat atom? Bolehkah pernyataan di atas dilaksanakan serentak? 🎜 rrreee 🎜Bagaimana dengan yang di atas? 🎜 rrreee 🎜Bagaimana dengan ini? 🎜 🎜+ ialah atom, jadi bolehkah + tidak serentak? tidak. 🎜 🎜Kami membayangkan dunia di mana 🎜tiada operasi adalah atom🎜. 🎜 🎜Ambil i++ yang paling mudah sebagai contoh: 🎜 Nilai 🎜i ialah 4. 🎜 🎜Pada masa ini, 2 utas 🎜laksanakan i++ pada masa yang sama. (Mari kita anggap bahawa serentak ialah apa yang anda maksudkan dengan konkurensi)🎜 🎜Bagaimanakah i++ berfungsi? 🎜
    • 🎜Pertama dapatkan nilai i. 🎜
    • 🎜Tambah 1 pada nilai i🎜
    • 🎜Hasil akhir disimpan dalam i🎜
    🎜Jika i++ tidak atom pada masa ini, maka kedua-dua benang akan mempunyai pelbagai perintah pelaksanaan dan mendapat keputusan yang salah. 🎜
    • 🎜Benang pertama memperoleh nilai i iaitu 4🎜
    • 🎜Benang kedua memperoleh nilai i iaitu 4🎜
    • 🎜Urut pertama menambah 1 pada i dan mendapat 5🎜
    • 🎜Urutan kedua menambah 1 pada i, mendapat 5🎜
    • 🎜Urut pertama menyimpan 5 ke dalam i🎜
    • 🎜Urutan kedua menyimpan 5 ke dalam i🎜
    🎜Dapatkan keputusan akhir, saya ialah 5. Jelas sekali keputusan ini salah. 🎜 🎜Tetapi kami tidak menghadapi situasi ini kerana i++ adalah atom. 🎜 🎜Jadi adakah ini bermakna atomicity tidak boleh serentak? ya. 🎜 🎜siapa peduli🎜 🎜Dari perspektif pengguna, operasi add mestilah atom. Apa yang kami setuju ialah 🎜sistem🎜, bukan 🎜operasi🎜. 🎜

    balas
    0
  • Batalbalas