Rumah  >  Soal Jawab  >  teks badan

java - Soalan tentang i++

Gunakan 2 utas untuk menambah automatik (i++) i=1, dan setiap utas melaksanakannya 100 kali Apakah nilai maksimum dan minimum yang mungkin? Tolong beri penjelasan

Tanya juga, adakah ++i atom?

phpcn_u1582phpcn_u15822712 hari yang lalu568

membalas semua(2)saya akan balas

  • PHP中文网

    PHP中文网2017-05-17 10:02:27

    Minimum boleh 3, iaitu +2, dan maksimum boleh 201, iaitu +200. . . . Mengapa saya tidak bermula dari 0. . .

    Proses kitaran ialah:

    1. Baca data dari memori untuk mendaftar

    2. Daftar nilai++

    3. Tulis data kembali ke ingatan

    Sesuatu benang mungkin terganggu dalam mana-mana tiga langkah ini. Kes 3 ialah:
    Urut pertama membaca data 1, kemudian digantung dan nilai daftar disimpan ke tempat lain. 1,然后被挂起,寄存器的值被保存到另一个地方。
    第二个线程,持续执行了 99 次(此时,内存中的值为 100),然后被挂起。
    第一个线程被唤醒,恢复寄存器的 1 +1 之后 (=2)被写回内存,该线程被挂起
    第二个线程从内存读取2到寄存器之后被挂起
    第一个全部执行完,把值写回内存
    唤起第二个线程,恢复寄存器中的2,完成最后一次循环+1 之后写回 3

    所以最终结果是 3Urutan kedua terus dilaksanakan sebanyak 99 kali (pada masa ini, nilai dalam memori ialah 100), dan kemudian digantung.

    Urut pertama dibangkitkan, dan selepas 1 +1 daftar pemulihan (=2) ditulis kembali ke ingatan, utas itu digantung

    Yang pertama Kedua-dua utas membaca 2 dari memori ke dalam daftar dan yang pertama dieksekusi sepenuhnya dan menulis nilai kembali ke memori.

    Menghindari urutan kedua. dan memulihkan nilai dalam daftar 2, tulis kembali 3 selepas melengkapkan gelung terakhir +1

    🎜Jadi hasil akhir ialah 3. . . . 🎜 🎜Saya belum memikirkan kaedah penjadualan yang lebih kecil lagi. . . 🎜 🎜Nilai maksimum tidak perlu diterangkan terlalu banyak. . . . 🎜

    balas
    0
  • PHP中文网

    PHP中文网2017-05-17 10:02:27

    Nilai minimum ialah 2 dan nilai maksimum ialah 200.
    2 bermaksud kedua-dua utas mengubah suai data dalam cache CPU, dan akhirnya memori hanya dimuat semula sekali
    200 bermakna kedua-dua utas membaca dan mengubah suai secara bergilir-gilir tanpa bersaing antara satu sama lain.
    Kita semua telah bertanya tentang nilai maksimum dan minimum, tetapi secara semula jadi ia bukan atom.

    balas
    0
  • Batalbalas