Вниз
Скачать: 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.011 c
9-22904
UNIVERSAL
2002-12-04 09:11
2003.05.08
3DS MAX 5.0


3-22957
Lamerr
2003-04-17 09:24
2003.05.08
Вопрос из области теории. Или нет.


1-23129
KA-87
2003-04-27 18:46
2003.05.08
Как узнать размер видимой части RichEditа?


14-23293
top-rules
2003-04-18 15:21
2003.05.08
TCP без IP


14-23390
topor
2003-04-18 15:15
2003.05.08
Как перевести прогу?




   Наверх