Форум: "Начинающим";
Текущий архив: 2013.03.22;
Скачать: [xml.tar.bz2];
ВнизПотоки - проверка на существование Найти похожие ветки
← →
ply © (2012-05-18 18:36) [0]Есть несколько потоков выполняющих определенные функции
Также есть таймер, запускающий эти потоки при необходимости.
Задача в том чтобы одновременно работал максимум 1 поток каждого типа.
Создаю потоки так:
thread_sms := Tsms_Payment_Thread.Create();
with thread_sms do begin
Priority := tpLower;
FreeOnTerminate:=true;
end;
Вопросы:
1. Как правильно сделать проверку на существование и нормальное функционирование потока?
2. В связи с этим не возникнет ли у меня следующей проблемы: в случае если поток зависнет либо вследствие чего-либо остановится, то новый поток просто не будет создан?
← →
oldman © (2012-05-18 18:45) [1]
> 1. Как правильно сделать проверку на существование и нормальное
> функционирование потока?
есть такое слово - "флаг"
потоки пушкин создает?
← →
Rouse_ © (2012-05-18 21:41) [2]Что за софт ты пишешь?
← →
Медвежонок Пятачок © (2012-05-18 21:50) [3]Задача в том чтобы одновременно работал максимум 1 поток каждого типа.
задача решается путем создания одного потока на каждый тип.
потоки живут пока живет процесс.
если для них сейчас нет работы, они ждут ее.
тогда ничего контролировать не надо.
← →
ply © (2012-05-18 21:58) [4]
> задача решается путем создания одного потока на каждый тип.
>
> потоки живут пока живет процесс.
> если для них сейчас нет работы, они ждут ее.
> тогда ничего контролировать не надо.
Спасибо, тоже к этому пришел=)
Скажите, я правильно делаю? (необходима возможность стартовать поток немедленно - делаю через публичную переменную ForceStart)
while not Terminated do begin
//задержка с проверкой необходимости стартовать немедленно
for i:=1 to 100 do begin
if ForceStart then break;
self.Sleep(10);
end;
DoWork;
end;
← →
Dennis I. Komarov © (2012-05-18 22:06) [5]Что делает поток, т.е. в чем смысл DoWork?
← →
ply © (2012-05-18 22:08) [6]
> Что делает поток, т.е. в чем смысл DoWork?
Проверяет появились ли в БД SMS для отправки и если да - отправляет их
← →
Германн © (2012-05-18 22:29) [7]
> Проверяет появились ли в БД SMS для отправки и если да -
> отправляет их
И вся эта работа выполняется в DoWork?
← →
ply © (2012-05-18 22:38) [8]
> И вся эта работа выполняется в DoWork?
В DoWork выполняется проверка и вызывается функция отправки СМС
← →
TStas (2012-05-18 23:09) [9]Я, может, чего-то не понимаю, но зачем нужны потоки, которые должны быть заведомо одинокие? Да еще и по таймеру? Чтобы программа не тормозила? Может Application.ProcessMessages просто вставить, а код ненужных потоков в основной поток программы вставить и не мучаться? Или в OnIdol проверять, если проверка маленькая. Опять же, ненужные таймеры уберутся.
Кстати, таймер для каких-то проверок, якобы паралельных основному потоку никогда не годятся. Они ведь всего навсего через Interval свой посылают сообщение основному потоку. Но если он занят чем-то важным, то сообщение это обработано не будет.
Вот положите на форму таймер и сделайте, чтобы он раз в секунду в метку писал очередное число. Пока ничего, кроме этого ничего не происходит, в метке будет написано число секунд со старта. А теперь займите окно чем-то долгим, например, поиском файла по всему компу. А потом посмотрите, что будет в метке написано. Таймер вообще не выход, да он и не для этого.
← →
Rouse_ © (2012-05-18 23:23) [10]
> Проверяет появились ли в БД SMS для отправки и если да -
> отправляет их
В газенваген, SMS спамеры обсуждаем на другом форуме...
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2013.03.22;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.1 c