Главная страница
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.011 c
14-83701
asku
2003-05-05 15:09
2003.05.26
API


3-83405
tm
2003-04-25 08:55
2003.05.26
Есть ли преимущества у лок. БД (напр. Paradox) перед InterBase


1-83487
Борис1
2003-05-15 13:18
2003.05.26
Работа с Word97


3-83408
Jaxtor
2003-05-06 14:00
2003.05.26
Вопрос по проектированию БД


1-83443
Мыш
2003-05-14 19:02
2003.05.26
Можно ли получить handle диалога?