Который является лучшим методом? Разрешение потока спать некоторое время или удаление его и воссоздание его позже?

Мне кажется, я понимаю вашу проблему сейчас и думаю, что вы хотели бы, чтобы успешная аутентификация вернула дополнительную информацию о том, где хранится файл пациента. Я бы сохранил это в токене как требование, поскольку оно может быть выражено как утверждение о предмете (пользователь). Это можно сделать в зарегистрированной (через внедрение зависимостей) реализации IProfileService. В реализации GetProfileDataAsync вы можете установить выданные заявки, используя свойство параметра «ProfileDataRequestContext» «IssuedClaims». Эти утверждения будут использованы для заполнения токена id, который вы должны искать.

6
задан Sam 26 October 2014 в 18:50
поделиться

13 ответов

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

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

Когда Вы хотите остановить свой целый процесс, где Ваш поток может выполняться или нет, необходимо прервать поток чисто. Всегда трудно прервать поток или знающий, спит ли это или работает. У Вас могут быть некоторые условия состязания там. Запуск потока по требованию освобождает Вас от тех потенциальных проблем: Вы знаете, запустили ли Вы поток и в этом случае вызов thread_join заставляет Вас ожидать, пока поток не сделан.

По тем причинам я пошел бы для потока по требованию решение, даже при том, что другой не имеет никаких insurmontable проблем.

9
ответ дан 8 December 2019 в 05:24
поделиться

Как Вы не забыли бы начинать новую дискуссию, когда эти два часа закончились? С таймером? (Это находится на другом потоке!) с другим потоком, который спит до требуемого времени? Закрытие потока и перезапуск его на основе чего-то работающего где-то в другом месте делают Вас отрицательный результат, если что-то еще или на своем собственном отдельном потоке или блокирует главное приложение, в то время как он ожидает для "Создавания" рабочего потока, когда эти два часа закончились, нет?

Просто позвольте сну Потока...

3
ответ дан 8 December 2019 в 05:24
поделиться

Запуск одного потока каждые два часа является очень дешевым, таким образом, я пошел бы с этим.

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

4
ответ дан 8 December 2019 в 05:24
поделиться

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

3
ответ дан 8 December 2019 в 05:24
поделиться

Я соглашаюсь с Vilx, что это - главным образом вопрос вкуса. Там обрабатывает и память наверху обоих методов, но достаточно вероятно чтобы любой имел значение.

1
ответ дан 8 December 2019 в 05:24
поделиться

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

Но так или иначе это - вероятно, не очень большая разница, и различие, вероятно, зависело бы от того, насколько хороший планировщик ОС и т.д...

1
ответ дан 8 December 2019 в 05:24
поделиться

При использовании Java, Вы могли бы проверить класс Таймера. Это позволяет Вам планировать задачи на данное время.

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

1
ответ дан 8 December 2019 в 05:24
поделиться

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

0
ответ дан 8 December 2019 в 05:24
поделиться

Это действительно зависит от одной вещи, поскольку я могу сказать... состояние.

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

Однако, если состояние, которое создает процесс, является значительным по сравнению с объемом работы, который будет сделан, и Вы коротки на ресурсах на машине, затем это не может стоить стоимости имения в наличии состояния промежуточный exectutions. Если это так, затем необходимо воссоздать поток с нуля каждый раз.

1
ответ дан 8 December 2019 в 05:24
поделиться

Я думаю, что это - просто вопрос вкуса. Оба хороши. Используйте тот, который Вы находите легче реализовать.:)

0
ответ дан 8 December 2019 в 05:24
поделиться

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

A. Сетевая система. Поточная обработка. Таймер ничего не стоит, в то время как он ожидает и вызовет Ваш код потока пула. В теории, которая была бы лучшей из обоих Ваших предложений.

0
ответ дан 8 December 2019 в 05:24
поделиться

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

0
ответ дан 8 December 2019 в 05:24
поделиться

Все это зависит, конечно. Но по умолчанию я пошел бы с отдельным процессом (не, распараллеливают), запустился по требованию.

0
ответ дан 8 December 2019 в 05:24
поделиться
Другие вопросы по тегам:

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