Главная страница
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.012 c
14-83683
Dmitriy_R
2003-05-06 07:08
2003.05.26
ServerSocket


1-83539
shnitken
2003-05-13 17:57
2003.05.26
Количество символов в RichEdit


3-83347
Rocker
2003-04-28 10:34
2003.05.26
как программно ввести пароль при доступе к БД?


1-83593
phantom2040
2003-05-14 14:53
2003.05.26
Вопрос по OpenDialog


14-83668
pet
2003-05-05 17:13
2003.05.26
smtp