redis - Bagaimana untuk memahami operasi atom memcache?
大家讲道理2017-05-31 10:36:15
0
1
1093
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? ?
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
从使用者角度讲,addAnda 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🎜. 🎜
Penyoal terlalu berfikir. Justru kerana keatoman
add
kita boleh yakin dengan kesesuaian.add
的原子性,我们才能够放心的并发。你对底层概念了解的不够。
我们说一个操作的并发是没有意义的。
上面的语句是原子性的吗?上面的语句可以并发吗?
上面的呢?
这个呢?
+
是原子性的,那么+
就不能并发了吗?不是。我们设想一个任何操作都不是原子性的世界。
拿一个最简单的
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
从使用者角度讲,
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? 🎜 🎜add
Anda tidak cukup mengetahui tentang konsep asas. Kami mengatakan bahawa konkurensi+
tidak serentak? tidak. 🎜 🎜Kami membayangkan dunia di mana 🎜tiada operasi adalah atom🎜. 🎜 🎜Ambili++
yang paling mudah sebagai contoh: 🎜 Nilai 🎜i
ialah4
. 🎜 🎜Pada masa ini, 2 utas 🎜laksanakani++
pada masa yang sama. (Mari kita anggap bahawa serentak ialah apa yang anda maksudkan dengan konkurensi)🎜 🎜Bagaimanakahi++
berfungsi? 🎜add
mestilah atom. Apa yang kami setuju ialah 🎜sistem🎜, bukan 🎜operasi🎜. 🎜