![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Пользователь
Регистрация: 22.02.2015
Сообщений: 24
|
![]()
Доброго времени суток! Подскажите пожалуйста как привязать потоки к данному коду. Пытаюсь разобраться но ничего не получается, просто цикл повторяется n-ое кол-во раз, а нужно чтобы он их делал последовательно. Суть программы в том, чтобы она брала из 1 файла список строк и проверяла строки на совпадение с 2ым файлом. Если строка из первого файла не встречается во втором то вывести на листбокс.
Без потоков большие объемы проверяет очень долго, например когда по 100 000 строк в первом и втором файле. Помогите разобраться! Буду очень признателен Код:
|
![]() |
![]() |
![]() |
#2 | |
ПШП
Участник клуба
Регистрация: 15.07.2013
Сообщений: 1,926
|
![]() Цитата:
|
|
![]() |
![]() |
![]() |
#3 |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
![]() Код:
I'm learning to live...
|
![]() |
![]() |
![]() |
#4 | ||
Пользователь
Регистрация: 22.02.2015
Сообщений: 24
|
![]() Цитата:
Мне приходит в голову только разделить первый файл поровну на n частей и для каждой написать поток с синхронизированным выводом на Листбокс Цитата:
![]() Последний раз редактировалось Stilet; 22.02.2015 в 15:00. |
||
![]() |
![]() |
![]() |
#5 | |
Форумчанин
Регистрация: 16.01.2015
Сообщений: 672
|
![]() Цитата:
|
|
![]() |
![]() |
![]() |
#6 | |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
![]() Цитата:
А я то думал что ты сейчас начнешь в хелпе искать описания всего этого, но видимо ранг тот же. Код:
I'm learning to live...
|
|
![]() |
![]() |
![]() |
#7 |
Тот ещё
Старожил
Регистрация: 14.11.2007
Сообщений: 2,242
|
![]()
Сори плиз. Но вы же знаете мою неуёмную тягу решать задачки аля лабораторные по delphi.
Сравнение 2х файлов.zip Так я и не научился нормально потоки останавливать. Всё какие-то костыли приделывать приходится. 2 Vlad2891 Много потоков не делай. Вот у меня i5 - 4 ядра. Так вот: 2 потока - 50% загрузки ядра, 3 потока - 75%. Намек ты понял. Второе (тут я уже помогать не стану, реально - не интересно). Перед тем как сравнивать 2 больших объема данных, поработай над ними. Например, если отсортировать списки по длине строк: Список 1: 22 222 333 444 4444 7777777 Список 2: 1 22 333 4444 55555 666666 7777777 Вот дошел ты, скажем, до строки "222" в списке 1 и "4444" в списке 2. Всё. Дальше идти смысла нет. Можно вообще разбить списки 1 и 2 на подсписки со строками одной длины и сравнивать только списки со строками одной длины. Ну и третье Порой структура самих данных подскажет тебе, как оптимальнее сравнивать. Если строки не рэндомные, как у меня, а имеют смысл и закономерности построения, то этим грех не воспользоваться. P/S: Ну и скажет мне кто, как правильно убить поток и дождаться его полной кончины. А то так и будут моим кодом программисты своих детишек, как бабайкой, пугать. Или ничё? Сойдет для личного пользования. Последний раз редактировалось Sibedir; 22.02.2015 в 17:30. |
![]() |
![]() |
![]() |
#8 |
Форумчанин
Регистрация: 31.05.2011
Сообщений: 301
|
![]()
FreeAndNil?
|
![]() |
![]() |
![]() |
#9 |
Тот ещё
Старожил
Регистрация: 14.11.2007
Сообщений: 2,242
|
![]() |
![]() |
![]() |
![]() |
#10 |
Форумчанин
Регистрация: 31.05.2011
Сообщений: 301
|
![]()
Посмотрел ваш код, там стоит FreeOnTerminate := True; значит достаточно Terminaate;
Ежелиб стояло False, то самому крошить поток методом Free; |
![]() |
![]() |
![]() |
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Потоки. Закрываются все потоки при ошибке в одном. | Son | Общие вопросы Delphi | 11 | 01.11.2013 09:32 |
потоки в цикле | MasterSporta | Общие вопросы C/C++ | 2 | 01.10.2011 17:07 |
Цикл в цикле... | Davlet M | Помощь студентам | 6 | 25.01.2010 01:42 |
Ошибка в цикле | Alamez | Общие вопросы Delphi | 2 | 05.04.2009 15:12 |