Rumah  >  Artikel  >  Java  >  Adakah System.nanoTime() Benar-benar Boleh Dipercayai pada Sistem Berbilang Teras Moden?

Adakah System.nanoTime() Benar-benar Boleh Dipercayai pada Sistem Berbilang Teras Moden?

Susan Sarandon
Susan Sarandonasal
2024-11-17 19:06:02928semak imbas

Is System.nanoTime() Truly Reliable on Modern Multi-Core Systems?

Adakah System.nanoTime() Masih Cacat pada Sistem Berbilang Teras?

Catatan blog "Berhati-hati dengan System.nanoTime() dalam Java" menimbulkan kebimbangan tentang kebolehpercayaan System.nanoTime() pada seni bina x86, di mana kaunter khusus CPU yang digunakannya boleh membawa kepada pengukuran masa negatif disebabkan penjadualan benang merentas pemproses yang berbeza dengan pembilang tak segerak.

Walau bagaimanapun, respons 2011 daripada jurutera Sun (kini Oracle) menjelaskan bahawa isu ini telah ditangani dalam Pek Perkhidmatan Windows XP 2 dan tidak lagi kebimbangan mengenai Windows dan Linux moden sistem.

Windows:

  • Pelaksanaan lalai QueryPerformanceCounter, yang digunakan oleh System.nanoTime(), telah ditukar untuk menggunakan pemasa pengurusan kuasa (PMTimer ), yang disegerakkan merentas pemproses pada SMP sistem.

Linux:

  • Sehingga versi kernel 2.6.18, logik sistem untuk mengesan sumber masa tak segerak telah dipertingkatkan.
  • Sumber masa yang tidak boleh dipercayai biasanya dikesan dan sandaran kepada sumber jam yang lebih dipercayai adalah bekerja.

Platform Lain:

Respons yang diberikan tidak menangani sistem SPARC atau Solaris. Walau bagaimanapun, adalah munasabah untuk mengandaikan bahawa platform ini juga telah melaksanakan mekanisme yang serupa untuk memastikan ketepatan masa merentasi berbilang pemproses.

Adalah penting untuk ambil perhatian bahawa maklumat ini adalah tepat pada tahun 2011. Untuk kemas kini terkini mengenai pelaksanaan dan tingkah laku System.nanoTime(), sila rujuk dokumentasi terkini dan perbincangan komuniti.

Atas ialah kandungan terperinci Adakah System.nanoTime() Benar-benar Boleh Dipercayai pada Sistem Berbilang Teras Moden?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn