Maison >Java >javaDidacticiel >System.nanoTime() est-il vraiment fiable sur les systèmes multicœurs modernes ?

System.nanoTime() est-il vraiment fiable sur les systèmes multicœurs modernes ?

Susan Sarandon
Susan Sarandonoriginal
2024-11-17 19:06:021010parcourir

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

System.nanoTime() est-il toujours défectueux sur les systèmes multicœurs ?

Le billet de blog « Méfiez-vous de System.nanoTime() dans Java" a soulevé des inquiétudes quant à la fiabilité de System.nanoTime() sur les architectures x86, où le compteur spécifique au processeur qu'il utilise pourrait conduire à des mesures de temps négatives en raison de la planification des threads sur différents processeurs avec des compteurs asynchrones.

Cependant, une réponse datant de 2011 d'un ingénieur Sun (maintenant Oracle) a précisé que ce problème avait été résolu dans Windows XP Service Pack 2 et ne constituait plus un problème sur les systèmes Windows et Linux modernes.

Windows :

  • L'implémentation par défaut de QueryPerformanceCounter, utilisée par System.nanoTime(), a été modifiée pour utiliser le minuteur de gestion de l'alimentation (PMTimer), qui est synchronisé entre les processeurs des systèmes SMP.

Linux :

  • À partir de la version 2.6.18 du noyau, la logique système de détection des sources de temps asynchrones a été améliorée.
  • Sources de temps peu fiables sont généralement détectés et un recours à une source d'horloge plus fiable est utilisé.

Autres plates-formes :

La réponse fournie ne concerne pas les systèmes SPARC ou Solaris. Cependant, il est raisonnable de supposer que ces plates-formes ont également mis en œuvre des mécanismes similaires pour garantir un chronométrage cohérent sur plusieurs processeurs.

Il est important de noter que ces informations étaient exactes à partir de 2011. Pour les mises à jour les plus récentes sur le implémentation et comportement de System.nanoTime(), veuillez vous référer à la documentation à jour et aux discussions de la communauté.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn