Как работает многопоточное приложение в многопроцессорной системе - PullRequest
0 голосов
/ 05 июня 2019

Допустим, у нас есть игровое приложение, в котором автомобиль, велосипед и башенные часы работают в отдельных потоках параллельно.

Как мы знаем, за один раз запускается только один поток. (переключение контекста происходит между потоками очень быстро, что создает впечатление, что он работает параллельно человеческим глазам)

Предположим, игра работает на двухъядерном мобильном телефоне.

Будут ли эти 3 потока разделены между двумя ядрами мобильного процессора?

Существует ли возможность одновременной работы автомобильной и велосипедной нити в любой момент времени?

Ответы [ 2 ]

2 голосов
/ 05 июня 2019

есть ли возможность для автомобильной нити и велосипедной нити одновременно работать в любой момент времени?

Да, есть такая возможность.Это зависит от реализации JVM (поскольку вы упомянули Java) и от реализации ОС, поэтому это не гарантировано, но возможно.

Как мы знаем, одновременно работает только один поток.(переключение контекста происходит между потоками очень быстро, что создает впечатление, что он работает параллельно человеческим глазам)

Это неправильно.Это было бы верно для одноядерного одноядерного процессора и могло бы быть верно для некоторых JVM / OS, но в общем случае неверно.

См. JLS, глава 17 :

Потоки могут поддерживаться наличием множества аппаратных процессоров, разделением по времени одного аппаратного процессора или разделением по времени многих аппаратных процессоров.

0 голосов
/ 05 июня 2019

Существует ли возможность одновременной работы автомобильной и велосипедной нити в любой момент времени?

Даже на одноядерном станке возможно, что нити могутзапустить одновременно .Одновременный запуск - это весь смысл использования потоков.

Если вы знаете, что ваша программа когда-либо будет работать только на однопроцессорной платформе, то вам, возможно, удастся избежать неуважения к Java модель памяти , но основные правила безопасности потоков - что нужно блокировать, а что нет - в обоих случаях будут одинаковыми.

... ибашенные часы

На самом деле нет причин использовать отдельную тему для анимации часов.Часы абсолютно предсказуемы.Его внешний вид является функцией текущего времени и ничего более.

PS: во многих приложениях нет причин использовать отдельные темы для отдельных автомобилей, мотоциклов или других MOB;но я не знаю ваше заявление, поэтому я не могу комментировать это.

...