|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
29.12.2012, 12:02 | #1 |
Пользователь
Регистрация: 27.09.2011
Сообщений: 26
|
Прикрутить многопоточность в программу.
Помогите сделать программму многопоточной. Прочитал тонны мануалов, но все равно не доходит.
Безпотоковая версия работает хорошо, а то что получилось - вообще отказывается работать. Укажите что не так: Код:
|
29.12.2012, 12:49 | #2 | |
Старожил
Регистрация: 26.04.2008
Сообщений: 2,645
|
Цитата:
1)Убери форму у idhttp1 из потока Код:
2)Убери компонент IdHTTP1 с формы, т.к. он будет теперь динамический, а вот в класс потока внеси его объявление Код:
Код:
4)Зачем многопоточность? Для скорости? Возможен обратный эффект. Пост запрос скорее всего маленький и пролетит быстро, а создание динамического idhttp и синхронизация всё затормозит. Если посты большие то тогда вполне оправдано. Я бы сделал в этом случае 1 поток, который считывает по несколько строк с мемо и запускает несколько потоков для скачивания. При завершении одного потока запускаем следующий и т.д. |
|
29.12.2012, 13:03 | #3 | |
Пользователь
Регистрация: 27.09.2011
Сообщений: 26
|
Спасибо большое что откликнулись eoln
Да, для скорости, вдруг в мемо будет не 10-20 а допустим 500 и более строк, а у пользователя интернет быстрый) Цитата:
Последний раз редактировалось admin22; 29.12.2012 в 13:05. |
|
29.12.2012, 13:22 | #4 | |
Старожил
Регистрация: 30.12.2009
Сообщений: 11,426
|
eoln, не имеет значения сколько строк берет поток, имеет значение только то, что поток всего 1.
Делите кол-во строк на желаемое кол-во потоков, остаток отдайте последнему потоку. Итого, скорость подпрыгнет в разы. admin22, в папке Demos, в каталоге Delphi, есть пример с потоками. Так же по форуму Цитата:
|
|
29.12.2012, 15:50 | #5 |
Пользователь
Регистрация: 27.09.2011
Сообщений: 26
|
Проблема по прежнему актуальна. Не могу понять, почему не работает. Вроде бы все советы eoln'a выполнил:
Код:
|
29.12.2012, 15:58 | #6 |
С++, Delphi
Форумчанин
Регистрация: 24.11.2012
Сообщений: 495
|
А почему вы синхронизируете с методом потока?
//----- ну а если быть честным.... чему равно i???? и попадаете ли вы? //---- и не забывайте что нужно чистить.. data.Free;
Если помог, тут весы есть , Вам не сложно, а мне приятно.
Последний раз редактировалось Perchik71; 29.12.2012 в 16:03. |
29.12.2012, 16:10 | #7 | ||||
Пользователь
Регистрация: 27.09.2011
Сообщений: 26
|
Цитата:
Цитата:
Цитата:
Цитата:
|
||||
29.12.2012, 16:17 | #8 |
С++, Delphi
Форумчанин
Регистрация: 24.11.2012
Сообщений: 495
|
Я очень люблю при отладке работать с Assert().
вы с потоко обращаетесь так как будто он функция. выделение и уничтожение idhttp должно происходить в конструкторе и диструкторе... В вашем коде не вижу что вы как то управляете над памятью. В потоке желательно вобще использовать минимум vcl ибо она однопоточная. Она конечно позволяет рисовать на канве, но чтото я вижу все рисуют через device context а не канвой. освободите поток от выделений памяти.. установите ассерты и наблюдайте за кодом.. ассерт сработает и укажит даже где. //---- А так же используйте цикл for для явных циклов... где вы знаете начало и конец.
Если помог, тут весы есть , Вам не сложно, а мне приятно.
Последний раз редактировалось Perchik71; 29.12.2012 в 16:20. |
29.12.2012, 16:23 | #9 |
Пользователь
Регистрация: 27.09.2011
Сообщений: 26
|
|
29.12.2012, 16:23 | #10 | |
С++, Delphi
Форумчанин
Регистрация: 24.11.2012
Сообщений: 495
|
Цитата:
Если помог, тут весы есть , Вам не сложно, а мне приятно.
|
|
|
Опции темы | Поиск в этой теме |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Можно ли прикрутить javascript к IE? | Gorkiy | JavaScript, Ajax | 1 | 14.11.2011 10:05 |
Как прикрутить Events | alex_alpha | Win Api | 2 | 17.12.2010 21:14 |
[Perl] Прикрутить цикл | gamer123 | PHP | 8 | 01.11.2010 13:04 |
Прикрутить к функции таймер | JustKurt | Общие вопросы Delphi | 8 | 03.08.2009 13:55 |
Как прикрутить GiveIO ? | caveman | Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM | 2 | 03.12.2007 08:43 |