Delphi - корректирующий время сна потока

Я обнаружил, что эти проблемы часто лучше всего решаются на уровне сервера. У вас есть доступ к файлу .htaccess, в который вы можете поместить правило перенаправления? Если это так:

RedirectPermanent /path/to/page http://uri.com

Это перенаправление также будет служить ответом «301 перемещено постоянно», чтобы указать, что страница Flickr (например) является постоянным URI для старой страницы.

Если это невозможно, вы можете создать собственный шаблон страницы для каждой рассматриваемой страницы и добавить следующий PHP-код в начало шаблона страницы (на самом деле, это все, что вам нужно в шаблоне:

header('Location: http://uri.com, true, 301');

Подробнее о заголовках PHP .

7
задан Argalatyr 7 June 2009 в 01:00
поделиться

3 ответа

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

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

Отметьте также, что использование максимальной мощности ЦП, как правило, хорошо, особенно на современных процессорах.

9
ответ дан 6 December 2019 в 15:29
поделиться

Вам лучше просто создать потоки с низким приоритетом и позволить им работать без сна, иначе вы не используете всю мощность процессора. Например, в многоядерных / многопроцессорных системах. Или, если ваша система на 100% простаивает: зачем ждать или спать?

Но если вам нужно немного сна, обратите внимание, что sleep (1) ждет 10-15 мс (!) Из-за временного кванта Windows по умолчанию. Вы можете использовать timeBeginPeriod (1) модуля MMSystem.pas, чтобы установить разрешение в 1 мс :-) (я использовал это для последовательной связи).

3
ответ дан 6 December 2019 в 15:29
поделиться

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

2
ответ дан 6 December 2019 в 15:29
поделиться
Другие вопросы по тегам:

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