В многопоточном приложении Java, если я хочу определить инструкции, в которых происходит переход контекста из одного потока в другой, какой наилучший подход? Прибор каждой инструкции для определения того, какой поток выполняет инструкцию, даст близкое приближение. Например, если переключатель происходит после того, как контрольно-измерительная аппаратура выполнена и до фактического instr. , то результат будет неточным.Переключение контекста в Java
Есть ли способ точно определить местоположение коммутатора контекста (которое будет отличаться для разных прогонов) в Java?
Что является наиболее экономически эффективным для идентификации этого?
Вы не можете сделать это в Java-коде. Вы должны сделать это с помощью крючков профилировщика. Позаботьтесь о том, зачем вам нужна эта информация? – Gray
Я боюсь, что вы не понимаете потоковую или контекстную коммутацию. Эта функция выполняется в комбинации с JVM и операционной системой. В частности, контекстная коммутация, вероятно, выполняется операционной системой в отношении вызовов, связанных с мьютексом (например, 'futex' в Linux). Java не имеет никакого контроля над этим. Хотя возможно написать собственное приложение для переключения контекста (сохранение стека в середине вашего приложения), чтобы эмулировать потоки, нет никакой реальной необходимости делать это отдельно от самоопределения (но я пошел туда, и это было очень назидательно - но не на Java, это был C и ассемблер). –
@Gray: Мне нужно сделать это, чтобы выполнить некоторый анализ. PP: Спасибо за ваши комментарии по моему пониманию резьбы. – user1539577