![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Пинг в несколько потоков [D7, WinXP]
Квэнди © (2006-12-08 15:21:00)Здравствуйте.
Вопроса у меня 2:
1. (немного не в эту тему) Есть объект TIdIcmpClient.
Можно ли одновременно в нескольких потоках запускать его функцию Ping ? Чем это грозит ?
2. Есть паралльельный поток, который, собственно, и будет запускать ping, затем синхронизируясь по получению ответа. Проблема в следующем:
кол-во потоков не известно, его будет вводить пользователь. Каким образом можно реализовать создание и запуск одновременно неизвестного в disign-time кол-ва потоков ?
Anatoly Podgoretsky (2006-12-08 15:48:00) [21]> Квэнди (08.12.2006 15:31:05) [5]
Не знаю - это динамика, создавай по мере необходимости.
Квэнди (2006-12-08 15:46:00) [22]
> Неверно.
А как тогда ? экземпляр объекта TIdIcmpClient один, ведь так ? и во всех одновременных поток используется один и тот же экземпляр...
Рамиль (2006-12-08 15:44:00) [23]
> выполнит только один, и ни один другой его не выполнит,
> пока первый не получит reply , верно ?
Неверно.
Квэнди (2006-12-08 15:42:00) [24]
> [1] и необязательно динамический, можно статический до n
> и не давать ввести больше n потоков.
Да это понятно, но не в этом основной вопрос )
Рамиль (2006-12-08 15:40:00) [25]
> Имеется ввиду что я не знаю кол- ва потоков. Соответственно
> единственно верный, имхо вариант это динамический массив
> потоков , так ?
[1] и необязательно динамический, можно статический до n и не давать ввести больше n потоков.
Квэнди (2006-12-08 15:31:00) [26]
> 1а. можно
> 1б ничем не грозит, кроме паралельности
Вот вопрос как раз в параллельности выполнения, т.е. в одну единицу времени вне зависимости от кол-ва потоко, пытающихся выполнить ping, выполнит только один, и ни один другой его не выполнит, пока первый не получит reply , верно ?
>
> 2. как ты создаешь потоки в дизайн тайм, очень интересно,
> покажи, тогда поможем с рантайм.
Неверно выразился.
Имеется ввиду что я не знаю кол- ва потоков. Соответственно единственно верный, имхо вариант это динамический массив потоков , так ?
Рамиль (2006-12-08 15:29:00) [27]
> Anatoly Podgoretsky © (08.12.06 15:26) [2]
Телепортатор подсказывает, что пытается так
var
th1, th2, th3 ... :TThread; :)
А var в runtime не перепишешь.
Рамиль (2006-12-08 15:27:00) [28]
> может он сам не умеет потоки плодить?
> может он сам умеет потоки плодить?
Рамиль (2006-12-08 15:26:00) [29]1. Если правильно разрулить, то ничем.
2. Непонятно зачем еще один поток, который будет запускать другие потоки? Чем из основного не нравится? А насчет количества
PingTreads: array of TThread или TString(Object)List
Хотя я не пользовался TIdIcmpClient, может он сам не умеет потоки плодить?
Anatoly Podgoretsky (2006-12-08 15:26:00) [30]> Квэнди (08.12.2006 15:21:00) [0]
1а. можно
1б ничем не грозит, кроме паралельности
2. как ты создаешь потоки в дизайн тайм, очень интересно, покажи, тогда поможем с рантайм.