Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2003.05.08;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.007 c
1-23162
Max1111
2003-04-24 14:32
2003.05.08
обнуление массива


3-22992
Progr@mist
2003-04-16 19:36
2003.05.08
выделение записей в DBGrid


8-23235
Сергей
2003-01-30 14:00
2003.05.08
Propotional draw


3-22984
Tundra
2003-04-17 15:03
2003.05.08
Вопрос по Oracle - кто нибудь подскажите ?


3-22988
zom
2003-04-14 12:54
2003.05.08
Поиск по индексу или Select, что быстрее через ADO?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский