Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C++ Builder > Потоки


Автор: OlexXX 14.9.2009, 07:08
Задача такая: хочу работу с интернет, реализованную с помощью API-функций, повесить в отдельный поток и тем самым защититься от ситуевины, когда скрипт на стороне сервера завис и не отвечает.

Как хочу сделать: в потоке 1 вызываю, например, HttpSendRequest. Перед этим фиксирую время. В потоке 2 смотрю, сколько времени прошло с момента HttpSendRequest. Если больше 5-и секунд, то принудительно прерываю поток 1 и затем повторяю запрос.

Правильно рассуждаю, или туплю? Ведь теоретически, HttpSendRequest может подвиснуть, если, скажем, завис на сервере? И еще... Если HttpSendRequest подвис, то параллельно в потоке 2 возможно время считать? Это нужно через Sinhronize как-то делать, или механизм потоков как бы заранее предполагает, что все потоки работают параллельно, в зависимости от их приоритета?

Спасибо заранее, кто подскажет.
 

Автор: Artemon 14.9.2009, 08:38
Я не работал с HttpSendRequest, но могу предположить, что у этой функции можно настроить time Out, и не придется отсчитывать время вручную.

Автор: OlexXX 14.9.2009, 13:50
Параметра нет. просто при возникновении ошибки формируется ее код. Но я хочу перестраховаться именно по времени. Или все усложняю?

Автор: SVN74 14.9.2009, 16:41
Обычно в компонентах заложены свои потоки с событиями, но если нет то надо прикручивать TThread...

Автор: Romikgy 14.9.2009, 20:11
Цитата(OlexXX @  14.9.2009,  06:08 Найти цитируемый пост)
механизм потоков как бы заранее предполагает, что все потоки работают параллельно

да 

вопроса я так и не увидел ..... что конкретно не понятно ...? попробуй реализовать то что хочешь , не получится свисти поможем...

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)