Mengapa Operasi Atom Bukan Lalai
Di Java, pengendali kenaikan (i ) bukan atom. Atomicity memastikan bahawa operasi selesai sepenuhnya sebelum operasi seterusnya bermula, menjamin hasil yang konsisten dan boleh dipercayai. Walau bagaimanapun, tidak semua kes penggunaan pengendali kenaikan memerlukan atomicity.
Pertimbangkan senario biasa untuk menambah pembilang dalam persekitaran berbilang benang. Menggunakan i akan memerlukan mekanisme penyegerakan yang mahal pada peringkat perisian dan perkakasan, kerana atomicity memerlukan akses eksklusif kepada pembolehubah dikongsi.
Jika atomicity dikuatkuasakan untuk semua operasi kenaikan, ia akan memperkenalkan overhed yang ketara dalam senario di mana ia berada. tidak perlu. Sebagai contoh, dalam konteks satu utas, di mana keadaan perlumbaan dua utas yang cuba menambah pembolehubah yang sama secara serentak tidak membimbangkan, kenaikan atom yang tidak cekap adalah tidak diperlukan.
Selain itu, menjadikan i atom akan pecah keserasian dengan bahasa pengaturcaraan popular, seperti C dan C . Selain itu, ia akan menimbulkan kekeliruan bagi pengaturcara yang beralih daripada bahasa tersebut, kerana mereka perlu menggunakan bentuk kenaikan bukan atom (i = i 1) dalam Java.
Malah pada peringkat arahan pemasangan, kenaikan atom operasi selalunya mempunyai kelemahan prestasi. Sebagai contoh, dalam seni bina x86, "awalan kunci" khas diperlukan untuk menjadikan arahan kenaikan atom, yang menimbulkan overhed tambahan.
Oleh itu, jika tiada penyegerakan atom yang jelas, i kekal sebagai bukan atom. operasi dalam Java, membolehkan pengoptimuman prestasi dalam senario di mana atomicity bukanlah satu keperluan yang ketat.
Atas ialah kandungan terperinci Mengapakah Operasi Atom Bukan Lalai di Jawa?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!