Форум: "WinAPI";
Текущий архив: 2005.12.04;
Скачать: [xml.tar.bz2];
Вниз
КАК МНЕ ОРГАНИЗОВАТЬ МНОГОПОТОЧНЫЙ ПОИСК Найти похожие ветки
← →
nevalex (2005-09-30 11:15) [0]КАК МНЕ ОРГАНИЗОВАТЬ МНОГОПОТОЧНЫЙ ПОИСК
у меня есть функция поиска файлов в сети
но это слишком медлинно
как мне организовать потоки(нити) чтобы я смог запустить функцию поиско с параметрами (DIR , mask)
если можно пример (не функции а организации этого)
-----------------
мне надо именно раскидать эти потоки по компам чтобы они искали каждый свое
← →
Digitman © (2005-09-30 12:31) [1]
> это слишком медлинно
быстрей не получится.
потоки (нити) не предназначены для "ускорения" чего-то там
← →
Lamer@fools.ua © (2005-09-30 12:46) [2]>>Digitman © (30.09.05 12:31) [1]
При поиске в сети может получиться. Например, если искать параллельно на нескольких сетевых компьютерах.
← →
ANB © (2005-09-30 14:12) [3]
> nevalex (30.09.05 11:15)
- создаешь свой класс нити. В поля прописываешь параметры поиска и место для результата. В процедуре выполнения засовываешь сам поиск (можно вынести в отдельную процедуру, только не в коем случае не обращайся оттуда к VCL. Хотя обращение к VCL и можно сделать неошибочным, но потоки начнут ждать друг друга и эффекта не будет) Дальше генеришь нужное количество объектов, заполняешь поля параметров и запускаешь. В основном потоке ждешь, пока завершаться потоки (можно каждый по отдельности обрабатывать) и достаешь из объектов нити ответ.
← →
Digitman © (2005-09-30 15:17) [4]
> Lamer@fools.ua © (30.09.05 12:46) [2]
нет, не получится.
потому что суммарное время, использованное всеми потоками процесса, осуществляющими поиск каждый в своем ресурсе, будет практически равно времени, использованному единственным (основным) потоком для поиска во всех этих ресурсах.
← →
ANB © (2005-09-30 15:22) [5]
> Digitman © (30.09.05 15:17) [4]
- да не должно бы. Большую часть времени эти потоки будут ждать ответа от файловой системы и сетки, посему, по идее, должно бы быстрее в сумме получиться.
← →
ANB © (2005-09-30 15:25) [6]
> Digitman © (30.09.05 15:17) [4]
- а чисто теоретически : если я запущу 10 вычислительных потоков на машине с HT, они в сумме будут также считать, как и один поток, или таки чуть чуть быстрее ? (Если запустить все в отдельных процессах - суммарная производительность выше, проверял лично)
← →
Digitman © (2005-09-30 15:42) [7]
> ANB © (30.09.05 15:25) [6]
в общем случае время, затраченное одним-единственным потоком и затраченное суммарно N-ным кол-вом потоков (того же процесса) на решение конечной задачи, будет сравнимо.
частный случай (мультипроцессорная система, гипертрединг и т.п.) не рассматриваем.
под "конечной задачей" я подразумеваю следующее :
сет.ресурс "1" - потенциально существуют X искомых файлов
сет.ресурс "2" - потенциально существуют Y искомых файлов
сет.ресурс "3" - потенциально существуют Z искомых файлов
и т.д.
задача - сформировать список записей вида:
Поле1 - Ид-р ресурса
Поле2 - Путь к найденному файлу, включая имя
И какая разница, сколько потоков будут решать эту задачу ?
Пока все потоки не отработают поиск в своем ресурсе, список не может считаться сформированным.
← →
Fay © (2005-09-30 17:25) [8]2 ANB © (30.09.05 15:22) [5]
2 Digitman © (30.09.05 15:42) [7]
Мне кажется, что многопоточный поиск по нескольким компам действительно уместен.
Соглашусь, пожалуй, с ANB ([5])
>> Большую часть времени эти потоки будут ждать ответа от файловой системы и сетки
, но я уверен, что выигрыш будет на том, что разные потоки будут курить в разное время, а не по очреди. Т.е. несколько потоков курят + несколько уже что-то делают.
← →
Digitman © (2005-09-30 18:00) [9]
> Fay © (30.09.05 17:25) [8]
уместен будет лишь в случае иной совершенно задачи, когда требуется просто обнаружить фактическое существование некоего файла на некоем ресурсе ... т.е. когда задача звучит иначе - есть список сет.ресурсов, найти первое же присутствие некоего файла хотя бы в одном из сет.ресурсов.
Страницы: 1 вся ветка
Форум: "WinAPI";
Текущий архив: 2005.12.04;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.04 c