Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.05.26;
Скачать: CL | DM;

Вниз

Как ограничить кол-во одновременно запущенных потоков   Найти похожие ветки 

 
Андрей   (2003-05-13 08:08) [0]

Помогите кто может: смысл такой программа обрабатывает кучу текстовых файлов. Для увеличения скорости работы решено использовать резделение на потоки: 1 файл обрабатывается в отдельном потоке. Но для того чтобы не "перегрузить систему" нужно ограничить кол-во одновременно запущенных потоков например 5. Как сделать так, чтобы программа запускала потоки до тех пор пока не будет достугнута эта граница, а все остальные потоки всали какбы в очередь и ждали, пока не завершится 1 из запущенных а потом стартовали по 1-му потоку взамен законченного. Спасибо. Если не трудно, киньте на мыло. Сразу спасибо.


 
MBo ©   (2003-05-13 08:12) [1]

1) вести учет потоков - счетчик, при завершении (OnTerminate) запускать новый
2) можно попробовать использовать семафор


 
Юрий Зотов ©   (2003-05-13 09:01) [2]

> а все остальные потоки всали как бы в очередь и ждали, пока не
> завершится 1 из запущенных а потом стартовали по 1-му потоку
> взамен законченного.

Навскидку, семафор подходит просто идеально.



 
Андрей   (2003-05-13 09:17) [3]

Ребята, дорогие!!!
я и сам бы рад использовать этот самый семафор. Но как его применять?!? никак не могу найти нормальное описание ни в литературе ни в инете, максимум 2 строки!!! и вроде как он только под юниксом работает, нет?
если не сложно, оставьте намек на то как им пользоваться или ссылочку нарисуйте :)


 
Bel ©   (2003-05-13 09:31) [4]

Глянь здесь http://www.delphimaster.ru/articles/book/index.html (глава 11) - есть вкратце про семафоры, с примером.


 
evvcom ©   (2003-05-13 10:00) [5]

А также эта тема по-моему неплохо освещена у Дж.Рихтера "Windows для профессионалов" (книга есть, например, на сайте А.Подгорецкого)


 
MBo ©   (2003-05-13 10:06) [6]

между прочим, вряд ли скорость обработки файлов увеличится при многопоточности.


 
Nerpa   (2003-05-13 10:37) [7]

У Рихтера твоя задача используется как пример работы с семафорами.


 
Андрей   (2003-05-13 13:19) [8]

Спасибо Вам большое...
Но разве в моей задаче при использовании многопоточности не уменьшится общее время обработки всех файлов по сравнению если вообще не использовать потоки, а обрабатывать их по одному? MBo, почему?


 
MBo ©   (2003-05-13 13:36) [9]

Если узким местом является именно обработка, то многопоточность только немножко замедлит (в случае однопроцессолного компьютера) - поскольку добавятся накладные расходы на переключение потоков.



Страницы: 1 вся ветка

Текущий архив: 2003.05.26;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.02 c
1-83475
MainKaif
2003-05-15 11:47
2003.05.26
Отлов нажатия клавиши


14-83680
dbDev
2003-05-05 06:27
2003.05.26
Ресурсы.


14-83743
ZeroDivide
2003-05-05 08:43
2003.05.26
ASM


1-83471
$HiC0
2003-05-13 13:00
2003.05.26
Цвет фона


7-83772
GydruS
2003-03-21 08:32
2003.05.26
Получение данных о линейном входе и понижение его громкости