Вниз
Скачать: 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 вся ветка

Скачать: CL | DM;



Память: 0.47 MB
Время: 0.012 c
3-83412
pok
2003-05-06 18:13
2003.05.26
Update одной таблице по результатам другой....


4-83798
iNew
2003-03-27 07:46
2003.05.26
Посмотрите на код и оцените с точки зрения оптимальности и вообще


4-83808
GrBob
2003-03-26 19:39
2003.05.26
Поиск объекта


11-83428
sandrolich
2002-08-19 11:42
2003.05.26
Рисование KOL


14-83665
RaideR
2003-05-05 15:41
2003.05.26
Отчет




   Наверх