![]() |
|
Модераторы: Snowy, bartram, MetalFan, bems, Poseidon, Riply |
![]()
|
|
| Alkash |
|
||||||||
|
коллекционер жизни ![]() ![]() Профиль Группа: Участник Сообщений: 516 Регистрация: 5.7.2004 Где: / Репутация: нет Всего: нет |
Рад приветствовать Вас, господа. Пишу многопоточный чекер, в программе - я загоняю список в формате ip:port - в TStringList, затем создаю потоки для проверки:
каждый поток работает следующим образом:
Так вот, проблема заключается в том, в методе execute - как я только не организовывал цикл, программа при работе допустим в 30 потоков - прогоняет 1 и тот же элемент списка. Например на вход даю TStringList с:
Вопрос заключается в том - как собственно разрешить данный затык. -------------------- Подпись >> /dev/null |
||||||||
|
|||||||||
| MetalFan |
|
|||
![]() Аццкий Сотона ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3815 Регистрация: 2.10.2006 Где: Moscow Репутация: 16 Всего: 128 |
Мда. Рекомендую "выкинуть" данный код.
А затем пойти читать до просветления: Многопоточность - как это делается в Дельфи. Не используйте потоки, не прочитав это -------------------- There are always someone smarter than you... |
|||
|
||||
| Alkash |
|
|||
|
коллекционер жизни ![]() ![]() Профиль Группа: Участник Сообщений: 516 Регистрация: 5.7.2004 Где: / Репутация: нет Всего: нет |
Почитал....подумал....допилил следующим образом:
Заработало. -------------------- Подпись >> /dev/null |
|||
|
||||
| XperT |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 269 Регистрация: 19.8.2006 Репутация: 1 Всего: 4 |
Немного критики (в образовательных целях):
В данном случае использование критических секций лишнее, так как функция UpdateThreads будет выполнена в основном потоке и каждый поток, который дойдёт до выполнения этого кода и так будет ждать, пока предыдущий завершит работу. К тому же, настоятельно рекомендую использовать критические секции вместе с конструкцией try...finaly, иначе, если вылетит где-то ошибка между открытием и закрытием критической секции, то все потоки подвиснут. В остальном, если не считать выравнивания кода, всё вроде нормально. |
|||
|
||||
| Alkash |
|
||||||
|
коллекционер жизни ![]() ![]() Профиль Группа: Участник Сообщений: 516 Регистрация: 5.7.2004 Где: / Репутация: нет Всего: нет |
ЭТо тоже заметил, и пофиксил - где заметил:
Это сообщение отредактировал(а) MetalFan - 27.4.2012, 17:18 -------------------- Подпись >> /dev/null |
||||||
|
|||||||
| MetalFan |
|
|||
![]() Аццкий Сотона ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3815 Регистрация: 2.10.2006 Где: Moscow Репутация: 16 Всего: 128 |
Что-то сразу и не скажешь) -------------------- There are always someone smarter than you... |
|||
|
||||
| Alkash |
|
|||
|
коллекционер жизни ![]() ![]() Профиль Группа: Участник Сообщений: 516 Регистрация: 5.7.2004 Где: / Репутация: нет Всего: нет |
Ну я же говорю - где заметил-)) Спасибо за тык носом-) -------------------- Подпись >> /dev/null |
|||
|
||||
![]()
|
| Правила форума "Delphi: WinAPI и системное программирование" | |
|
|
Запрещено: 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, bartram, MetalFan, bems, Poseidon, Rrader, Riply. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Delphi: WinAPI и системное программирование | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |