Модераторы: Poseidon, Snowy, bems, MetalFan

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Повторное использование потока, TThread 
V
    Опции темы
Alexeis
Дата 9.5.2009, 15:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

Репутация: 109
Всего: 459



Цитата(NewDima @  9.5.2009,  13:41 Найти цитируемый пост)
дело в том, что suspend и resume вызываются только в самом классе, причем в соответствующих случаях закрываются(или открываются) нужные дескрипторы. Разве это не должный контроль ресурсов?

   Как можно определить тот самый момент? Кроме того ничего не мешает вызывать методы наследника TThread из чужого потока и получить остановку в неопределенный момент. Определить нужный момент можно заставив поток ждать нужного момента, например на WaitForSingleObject/GetMessage/SendMessage и т.д. Раз уж мы смогли остановить поток в нужный момент, то зачем делать дополнительный suspend, ведь он и так спит ?


--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
Демо
Дата 9.5.2009, 16:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1278
Регистрация: 3.11.2005

Репутация: 30
Всего: 50



Цитата(NewDima @  9.5.2009,  14:41 Найти цитируемый пост)
Демо, ты имеешь ввиду, что два других потока попытаются выполнить этот метод? Если честно, не совсем понимаю, почему такое возможно 


Цитата(NewDima @  8.5.2009,  10:56 Найти цитируемый пост)
function TDownloadThread.Download(Url: string; Start, Len: integer): integer;
begin
//                                     Здесь входит первый поток
if FSheduled then exit;
//                                     Здесь входит второй поток
//                                     ...
//                                     Здесь входит N-ый поток
//                                     Все они выполняют код ниже.

FSheduled := true;
FSheduleStart := Start;
FSheduleLen := Len;
FSheduleURL := Url;
Resume;
end;



Это сообщение отредактировал(а) Демо - 9.5.2009, 16:37


--------------------
    
PM MAIL ICQ Skype   Вверх
NewDima
Дата 9.5.2009, 16:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 922
Регистрация: 20.2.2006
Где: <?here?>

Репутация: 2
Всего: 12



Спс, я подумаю
PM ICQ   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0489 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.