|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
22.02.2015, 02:59 | #1 |
Пользователь
Регистрация: 22.02.2015
Сообщений: 24
|
Потоки в цикле
Доброго времени суток! Подскажите пожалуйста как привязать потоки к данному коду. Пытаюсь разобраться но ничего не получается, просто цикл повторяется n-ое кол-во раз, а нужно чтобы он их делал последовательно. Суть программы в том, чтобы она брала из 1 файла список строк и проверяла строки на совпадение с 2ым файлом. Если строка из первого файла не встречается во втором то вывести на листбокс.
Без потоков большие объемы проверяет очень долго, например когда по 100 000 строк в первом и втором файле. Помогите разобраться! Буду очень признателен Код:
|
22.02.2015, 03:12 | #2 | |
ПШП
Участник клуба
Регистрация: 15.07.2013
Сообщений: 1,881
|
Цитата:
|
|
22.02.2015, 08:25 | #3 |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
Код:
I'm learning to live...
|
22.02.2015, 12:36 | #4 | |
Пользователь
Регистрация: 22.02.2015
Сообщений: 24
|
Цитата:
Мне приходит в голову только разделить первый файл поровну на n частей и для каждой написать поток с синхронизированным выводом на Листбокс Ругается "Type of expression must be BOOLEAN" Последний раз редактировалось Stilet; 22.02.2015 в 15:00. |
|
22.02.2015, 13:24 | #5 | |
Форумчанин
Регистрация: 16.01.2015
Сообщений: 672
|
Цитата:
|
|
22.02.2015, 15:02 | #6 | |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
Цитата:
А я то думал что ты сейчас начнешь в хелпе искать описания всего этого, но видимо ранг тот же. Код:
I'm learning to live...
|
|
22.02.2015, 17:28 | #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. |
22.02.2015, 17:34 | #8 |
Форумчанин
Регистрация: 31.05.2011
Сообщений: 301
|
FreeAndNil?
|
22.02.2015, 17:51 | #9 |
Тот ещё
Старожил
Регистрация: 14.11.2007
Сообщений: 2,242
|
|
22.02.2015, 18:02 | #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 |