![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Пару вопросов по потокам
Apolo © (2004-09-08 15:53:00)Ув. Мастера есть пару вопросов:
1. Прочитал статью http://www.delphimaster.ru/articles/panov/index.html
и вопрос по куску кода:
if Assigned(TMonDirThread(fMonDirMain.Tag)) then
TMonDirThread(fMonDirMain.Tag).Terminate;
fMonDirMain.Tag := 0;
Обратите внимание на строки, выделенные жирным шрифтом.
Вместо того, чтобы создавать дополнительно переменную типа TMonDirThread, мы присвоили свойству формы Tag ссылку на созданный объект-поток, воспользовавшись явным приведением типа Integer(), так как любой указатель можно преобразовать к типу Integer.
Что значит ссылка на созданный обьект-поток?
Обясните пожалуйста поподробнее что храниться в fMonDirMain.Tag?
Там храниться какоето длинное целочисленное число, что ето число означает? и как понять TMonDirThread(fMonDirMain.Tag)?
2. Как мне, если надо, обновлять данные потока из основной программы? Тоже Synchronize?
3. Что мне необходимо, если я хочу организовать N одинаковых потоков (N заранее неизвестно)?
Мне надо хранить гдето список запущенных потоков?
Как мне им передавать в переменные какието значения, если потоки одинаковые?
Заранее спасибо!
Digitman (2004-09-08 16:34:00) [1]
> Не могу понять, что значит ссылка
результат выполнения конструирующего метода TSomeClass.Create(..) и есть ссылка на успешно созданный экземпляр класса TSomeClass
иными словами, то что возвращает этот оператор есть адрес в памяти структуры, описывающей вновь созданный объект класса TSomeClass
> как понять TMonDirThread(fMonDirMain.Tag)
здесь мы "командуем" компилятору (чтобы не ругался) : то ц/ч значение, которое хранится в св-ве Tag объекта, ссылка на который хранится в поле fMonDirMain, сей момент интерпретировать не просто как целое 32-битное знаковое число, а как указатель на объект класса TMonDirThread
Apolo (2004-09-08 16:11:00) [2]
> то же что и ссылка на любой иной Делфи-объект
>
> если бы речь шла не о потоках, а о некоем объекте произвольного
> класса, вопрос был бы тем же ?
Да, вопрос тот-же.
Не могу понять, что значит ссылка .....
и как понять TMonDirThread(fMonDirMain.Tag)?
Digitman (2004-09-08 16:02:00) [3]
> Что значит ссылка на созданный обьект-поток?
то же что и ссылка на любой иной Делфи-объект
если бы речь шла не о потоках, а о некоем объекте произвольного класса, вопрос был бы тем же ?
> Как мне, если надо, обновлять данные потока из основной
> программы? Тоже Synchronize?
"программа" и "поток" - сущности не сравниваемые
> Что мне необходимо, если я хочу организовать N одинаковых
> потоков (N заранее неизвестно)?
ну вероятно - массив ссылок на экземпляры объектов, описывающих каждый из потоков