Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2013.03.22;
Скачать: CL | DM;

Вниз

Потоки - проверка на существование   Найти похожие ветки 

 
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;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.06 c
3-1278159587
alex810
2010-07-03 16:19
2013.03.22
Запрос с нечувствительностью к регистру


15-1345798515
Beginer
2012-08-24 12:55
2013.03.22
Как отключить автовыравнивание значков на рабочем столе?


15-1353240876
Чайник
2012-11-18 16:14
2013.03.22
Опять про GuardMailRu


15-1337884316
Bluejohn
2012-05-24 22:31
2013.03.22
Правильно ли сделан список?


2-1333827483
OldMBr
2012-04-07 23:38
2013.03.22
Сообщения, не требующие ответа