У меня в приложении много потоков, причем имеют они разные приоритеты. Так вот есть среди них поток с самым низким приоритетом. Не смотря на это, он отбирает все рессурсы процесса и выполняется один. При этом ни один из потоков процесса не может выполниться пока этот поток не закончит. И самое инетересное в том что сам поток занимает максимум 1% процессорного времени и все равно паралельно с ним не может выполняться ни один поток приложения. Приложение написано на C#.
Advanced member
Статус: Не в сети Регистрация: 09.06.2003 Откуда: USSR
Ну или скажем, ты мог в потоке в цикле делать бесконечное вычисление, так у тебя пусть хоть IDLE стоит все равно пока не отработает все остальные зависнут. Поток вообще хорошо применять не для массивного вычисления или любого другого действия, а скажем для какого либо ожидания событие или одноразового прохода . Это всеже не отдельаная программа, а отдельный поток в программе и он запросто может подвесить и основной поток. Сам несколько раз нарывался на такое. Вот у меня в АТТ висят пара потоков, которые ожидают события через WaitforSingleObject/WaitForMultipleObjects. от хуков или драйверов, в этом режиме поток вообще ничего не делает.
Поток работает с библиотекой, которая управляет определенным внешним устройством. Конечно же поток обрабатывает действия интерфейсного потока, вернее главный поток говорит когда ему работать. Здесь очевидно криво написанные дрова. Однако исправлять дрова нет возможности, я их не писал. Потому решение в том чтобы правильно распределить процессорное время между потоками процесса. Насколько я понимаю приоритет idle устанавливается для процессов, а не потоков. Поток же имеет самый низкий приоритет.
Advanced member
Статус: Не в сети Регистрация: 10.04.2003 Откуда: Москва
Zhoma, твоя ситуация похожа на взаимную блокировку потоков. Т.е. более шустрые потоки хотят выполняться, но IDLE thread им не дает. Может ты вызываешь сервис или пользуешься данными, у которых свойство 'только один поток'? Кол-во тэдов не важно, у меня в S&M их 12 болтается, причем с равным приоритетом - не в количестве зло. конечно, если я правильно понял вопрос
Потоки пересекаются данными, но блокировки при этом не происходит, они выполняются параллельно. Установлены семафоры, работу котоых я неоднакратно проверял. А вот что означает код я так до конца и не понял.
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения