Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2003.05.26;
Скачать: [xml.tar.bz2];

Вниз

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

 
Андрей   (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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.46 MB
Время: 0.008 c
11-83425
Gandalf
2002-08-19 10:42
2003.05.26
KOLnMCK 1.41 !


4-83818
bobo
2003-03-25 11:11
2003.05.26
В Rich edit вращением колесика мыши при нажатой левой кнопке можн


14-83698
Ksanka
2003-05-05 11:51
2003.05.26
Запуск виндового медиа плейера


1-83460
Space
2003-05-13 10:05
2003.05.26
Обработка нажания на клавишу Enter


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





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский