Форум: "Основная";
Текущий архив: 2005.06.29;
Скачать: [xml.tar.bz2];
ВнизНить и ЦП Найти похожие ветки
← →
_BasiL_ © (2005-06-09 13:41) [0]Здравствуйте!
Нити загружают ЦП на 100%, при этом комп не тормозит и другие приложения выполняются без тормозов.
Есть одна главная нить, она сканирует папки на наличие появления определенных файлов, при нахождении таких она раздает рабочим нитям (динамический массив нитей, сколько пользователь создаст) в буфер, соответственно контролирует равномерное заполнение буферов. У рабочей нить вначале пустой цикл с приоритетом IDLE в котором смотрится буфер и с интервалом в 3 секунды вызывается Synchronize процедуры которая на визуальном объекте выводит свой буфер, если в буфере оказался файл, она себя выставляет в NORMAL и начинает его обробатывать.
И вот такой парадокс, если создать одну рабочаю нить и ее запустить без главной нити сканирования, теоретически и практически рабочая нить крутится в этом пустом цикле, а проц подскакивает на 100%. Убирал из этого цикла Synchronize, оставит только такой кодFName="";
repeat
if Terminated then Exit;
until FName<>"";
Загрузка ЦП всеравно 100%
← →
iskatel © (2005-06-09 13:43) [1]sleep(ms)
← →
_BasiL_ © (2005-06-09 14:15) [2]Помогло :-)
← →
Суслик © (2005-06-09 14:17) [3]sleep(0)
← →
Alexander Panov © (2005-06-09 14:28) [4]Неправильно работаешь с потоками. Почитай про объекты синхронизации, например про Event, Semaphore.
см. также WaitForSingleObject.
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2005.06.29;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.04 c