2009-10-20 4 views
2

Я не уверен, но у iPhone нет многоядерного процессора. Так ли имеет смысл прикладывать усилия к многопоточности или это просто пустая трата времени?Имеет ли смысл делать многопоточность на iPhone?

Я делаю тяжелый материал, который позволяет всему моему пользовательскому интерфейсу застыть, пока это не будет сделано. Теперь этот материал кажется таким тяжелым, что он просто всасывает всю мощность процессора. Накладывает ли решение какое-то решение, по крайней мере, быстро переключаться между двумя процессами - тяжелым материалом и реагированием на взаимодействие с пользователем?

+0

Именно поэтому были созданы потоки. – Nathan

+0

Даже если система имеет несколько потоков, просто запуск фоновых потоков не означает, что несколько ядер будут использоваться ... в большинстве систем, которые вы должны оптимизировать для использования различных ядер, Apple Central Dispatch (новая для снежного барса) пытается оптимизировать мульти -threading с использованием разных ядер (поэтому программисту не обязательно) – Daniel

ответ

7

Да , имеет смысл иметь несколько потоков. Специально, если вы выполняете какой-либо ввод-вывод (диск, сеть), ваше приложение будет гораздо более отзывчивым, если вы не заблокируете, ожидая ввода или вывода.

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

1

Да, потому что вы никогда не знаете, в какой-то момент, может быть многоядерный процессор в iPhone (если не сейчас), и ваше приложение будет поддерживать его ....;)

2

Для многопоточности (многопоточность для многопоточности существует гораздо больше, чем многоядерные процессоры) вам не нужны несколько ядер.

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

... так что да, приложите усилие к многопоточности.

Смежные вопросы