tag:blogger.com,1999:blog-4008907788073251960.post1933368523979664270..comments2023-05-26T02:37:13.909-07:00Comments on Delphicoding: Использование OmniThread Libray 2.0 (OTL 2.0) для создания многопоточных приложений. Настройка фоновых задач в OTLParallelКузан Дмитрийhttp://www.blogger.com/profile/08411855893021280519noreply@blogger.comBlogger1125tag:blogger.com,1999:blog-4008907788073251960.post-31710221058254364322012-12-23T02:52:10.535-08:002012-12-23T02:52:10.535-08:00Помогите разобраться
Многопоточное приложение обр...Помогите разобраться<br /><br />Многопоточное приложение обрабатывает файлы записывает результаты в БД (MS SQL Server)<br /><br />многопоточность реализованна с помощью библиотеки OmniThreadLibrary, <br />Создаю Пул потоков FConnectionPool := CreateThreadPool('Connection pool');<br /><br />Один экземпляр потока (Worker) делает:<br />чтение файла с диска (моментально)<br />расчёт по файлу (долго)<br />запись в БД (моментально)<br /><br />потоки полностью независимые<br /><br />Необходимо максимально быстрая обработка, полная загрузка сервера работой<br /><br />Проблема в неполной загрузке процессора (4 ядра).<br /><br />запускаю в 1 поток = обработка ~120 файла в сек, загрузка ЦП=25% (одно ядро на 100%)<br />FConnectionPool.MaxExecuting := 1;<br /><br />запускаю в 4 потока = обработка ~120 файла в сек, загрузка ЦП=25% (нагрузка размазана по 4-ём ядрам (на 25% каждое)<br />FConnectionPool.MaxExecuting := 4;<br /><br />Запускаю второй exe , получается 120+120 , 25%+25%<br /><br />Как добиться чтобы в рамках одного процесса(exe файла) добиться загрузки процессора 75% и производительности 120*3 файла/сек ??<br />Повышение приоритета процесса(через диспетчера задач - ничего не даёт)Anonymoushttps://www.blogger.com/profile/16487293664003974768noreply@blogger.com