Когда должен я рассматривать изменяющийся приоритет потока

Вот такой подход, который может быть очень простым и запоминающимся. Проверьте 2 условия и выполните команду 1.

Если

вы находитесь в «отдельной голове» (т. Е. Введите git status, вы увидите HEAD detached at <commit_id>)

И

существующая ветка соответствует вашим потребностям (т. Е. Введите git branch -v, вы увидите название ветки с соответствующими сообщениями фиксации, представляющими работу, которую вы хотите продолжить)

Затем

просто проверьте эту ветвь (т. е. тип git checkout <branch_name>, вы увидите Switched to branch <branch_name>).

Исходные данные

Теперь вы можете продолжать добавлять и выполнять свою работу, как и раньше; изменения будут отслеживаться на <branch_name>.

Обратите внимание, что если вы сохранили работу во время отсоединения HEAD, в большинстве случаев эта работа будет автоматически объединена в описанном выше процессе. Если вы видите сообщение о конфликте слиянием, не паникуйте. Существует несколько замечательных руководств с простыми шагами для устранения конфликта и завершения слияния.

7
задан theschmitzer 18 September 2008 в 18:53
поделиться

5 ответов

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

При пошаговом перемещении потоков тут и там, чтобы к bodge выход из проблемы, в конечном счете они все будут высоким приоритетом, и Вы вернулись, где Вы запустили. Не предполагайте, что можно зафиксировать состояние состязания с установлением приоритетов, когда действительно ему нужна блокировка, потому что возможности, Вы только зафиксировали его в дружественных условиях. Могут все еще быть случаи, где это может перестать работать, такой как тогда, когда поток более низкого приоритета подвергся наследованию приоритета, потому что другой первоочередной поток ожидает на другой блокировке, которую это содержит.

При классификации потоков вроде "этих потоков заливка аудио буфер", "эти потоки делают мое приложение быстро реагирующим к системным событиям", "эти потоки делают мое приложение быстро реагирующим пользователю", "эти потоки продолжают некоторый бизнес и сообщат, когда они хороши и готовы", затем потоки должны быть расположены по приоритетам соответственно.

Наконец, это зависит от ОС. Если приоритет потока абсолютно вторичен для обработки приоритета, то не должно быть "опасно" расположить по приоритетам потоки: единственная вещь можно исчерпать ресурсы ЦП, самостоятельно. Но если Ваши первоочередные потоки работают в предпочтении к потокам нормального приоритета другого, несвязанных приложений, то Вы несете более широкую ответственность. Необходимо только повышать приоритеты потоков, которые делают небольшие объемы срочной работы. Определение "маленьких" зависит, какое устройство Вы идете - с многоядерным процессором на 3 ГГц, Вам сходит с рук много, но мобильное устройство могло бы иметь псевдо ожидания в реальном времени, что приложения уровня пользователя могут повредиться.

Хранение аудио обслуживаемого буфера является каноническим примером того, когда быть высоким приоритетом, тем не менее, так как маленькие недогрузки обычно вызывают противный треск. Долгие загрузки (или другой медленный ввод-вывод) являются каноническим примером того, когда быть низким приоритетом, так как нет никакой безотлагательности, обрабатывающей этот блок данных, если следующий не приедет целую вечность так или иначе. Если Вы когда-либо запишете драйвер устройства, то необходимо будет принять более сложные решения, как играть приятно с другими.

6
ответ дан 7 December 2019 в 01:28
поделиться

Не многие. Единственное время я должен был когда-либо изменять приоритеты потока в положительном направлении, было с потоком пользовательского интерфейса. UIs должен быть чрезвычайно мгновенным для приложения для чувствования себя хорошо, таким образом, много времен лучше располагать по приоритетам потоки рисования выше, чем другие. Например, Поток Отправки События Swing работает в приоритете 6 по умолчанию (1 выше, чем значение по умолчанию).

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

2
ответ дан 7 December 2019 в 01:28
поделиться

Наше приложение использует фоновый поток для загрузки данных, и мы не хотели то вмешательство с потоком UI на одножильных машинах, таким образом, мы сознательно расположили по приоритетам, это понижается.

1
ответ дан 7 December 2019 в 01:28
поделиться

Я думаю, что это зависит от направления, Вы смотрите на изменение приоритета.

Обычно Вы никогда не должны увеличивать приоритет потока, если у Вас нет очень серьезного основания. Увеличение приоритета потока может заставить поток Вашего приложения начинать устранять время из других приложений, которое, вероятно, не является тем, что хочет пользователь. Если Ваш поток израсходовал существенное количество ЦП, это может сделать машину трудно для использования, поскольку некоторые стандартные потоки UI могут начать исчерпать ресурсы.

Я сказал бы единственные времена, которые необходимо увеличить, приоритет выше нормального состоит в том, если пользователь явно сказал приложению делать так, но даже затем Вы хотите препятствовать тому, чтобы "невежественные" пользователи делали так. Возможно, если Ваше приложение обычно не использует много ЦП, но могло бы иметь краткие пакеты действительно действительно важного действия затем, могло быть нормально иметь увеличенный приоритет, поскольку это не будет обычно умалять общий опыт пользователя.

Уменьшение приоритета является другим вопросом. Если Ваше приложение делает что-то, что берет МНОГО ЦП и работает в течение долгого времени, все же не очень важно, то понижение приоритета может быть хорошим. Путем понижения приоритета Вы позволяете ЦП использоваться для других вещей, когда он необходим, который помогает сохранить систему, отвечающую быстро. Пока система главным образом бездействует кроме Вашего приложения, Вы все еще получите большую часть процессорного времени, но не отнимете у задач, для которых нужен он больше, чем Вы. Примером этого был бы поток, который индексирует жесткий диск (думайте рабочий стол Google).

1
ответ дан 7 December 2019 в 01:28
поделиться

Я сказал бы, когда Ваши предположения первоначального проекта о потоках больше не действительны.

Приоритет потока является главным образом проектным решением о том, какая работа является самой важной. Таким образом для некоторых примеров того, когда пересмотреть: Если Вы добавляете новую опцию, которая могла бы потребовать ее собственного потока, который становится более важным, то пересмотрите приоритеты потока. Если некоторое изменение требований, которые вынуждают Вас пересмотреть приоритеты работы, которую Вы делаете, то пересмотрите. Или, если Вы делаете тестирование производительности и понимаете, что Ваша "высокоприоритетная работа", как указано в Вашем дизайне не получает необходимую производительность, затем настройте приоритеты.

Иначе, часто взлом.

0
ответ дан 7 December 2019 в 01:28
поделиться
Другие вопросы по тегам:

Похожие вопросы: