Вниз
Скачать: 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 вся ветка

Скачать: CL | DM;



Память: 0.46 MB
Время: 0.012 c
1-23082
Unknown user
2003-04-23 19:18
2003.05.08
Как скопировать все компоненты с одной формы на другую?


14-23370
Andrey
2003-04-21 14:03
2003.05.08
Программирование и остеохандропатический кифоз


1-23053
LyzD
2003-04-23 23:32
2003.05.08
Как прочитать файл в кодировке Unicode


8-23242
Димон
2003-01-29 15:13
2003.05.08
Экспорт в DFX


4-23434
Шоломицкий
2003-03-07 22:32
2003.05.08
RegisterHotKey




   Наверх