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

Вниз

Организация задержки   Найти похожие ветки 

 
Zilog ©   (2003-04-24 17:48) [0]

Чем можно заменить такую строчку, работающую в дополнительном потоке? Дело в том, что она тормозит программу.

WaitReply:
if Reply = "" then goto WaitReply;


 
Zelius ©   (2003-04-24 17:51) [1]

поток должен работать только тогда, когда ему есть что делать! А в остальное время он должен спать, то есть надо вызывать ф-ии типа Sleep, WaitForSingleObject, GetMessage... В твоем случае он этого не делает, работает постоянно, вот тебе и загрузка процессора...


 
Digitman ©   (2003-04-24 17:54) [2]

Вот WaitReply и "тормозит" как раз)


 
Zilog ©   (2003-04-24 18:00) [3]

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

Может что подскажете?....


 
TCrash ©   (2003-04-24 18:04) [4]

Опрашивай Reply по таймеру, если конечно ответы приходят не слишком часто


 
Zilog ©   (2003-04-24 18:15) [5]

Как это по таймеру сделать?
Вот кусок кода - посылаю в com порт команду, надо ждать ответа,
чтобы предпринять дальнейшие действия:
---------------
...

if not Transmit("ATD"+Phone) then exit;
Reply := "";

WaitReply:
if Reply = "" then goto WaitReply;

if Reply = "NO CARRIER" then begin
Status(stTm,"Нет соединиения");
Result := false;
exit;
end;

...
---------------


 
han_malign ©   (2003-04-24 18:15) [6]

Самое простое
while(Reply="")do sleep(5);

> Ответ приходит в ком порт
- куда "в ком порт", и кто присваивает значение в Reply? Если это какой то компонент, то там наверняка должна быть синхронизация - либо callback, либо event, либо классический WaitReply...


 
Zilog ©   (2003-04-24 18:19) [7]

Вот это вроде как помогло :)))) Пасиба!!
while(Reply="")do sleep(5);

>> куда "в ком порт", и кто присваивает значение в Reply?
Значение присваиваю я, при возниконовении события.



 
Zelius ©   (2003-04-24 19:50) [8]

А вообще специально для таких случаев есть асинхронные операции ввода/вывода.



Страницы: 1 вся ветка

Текущий архив: 2003.05.08;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.014 c
1-23137
Fighter
2003-04-28 09:42
2003.05.08
Прокрутка в TScrollBox


14-23377
vopros
2003-04-21 17:36
2003.05.08
Возьму талантливую девушку на содержание


3-22961
Bill
2003-04-17 09:07
2003.05.08
Работа со значениями в DBGrid.


3-22960
VlGrig1961
2003-04-16 11:48
2003.05.08
Oracle8 как уменьшить размер Tmp1orcl.ora


6-23248
Alexandr VZ
2003-03-11 20:04
2003.05.08
Определение настроек сети