Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Полное использование двуядерного процессора, почему-то загружается только на 50% 
:(
    Опции темы
NightWishMaster
  Дата 10.12.2007, 14:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 41
Регистрация: 14.4.2006

Репутация: нет
Всего: нет



Программа, созданная на С++ Builder 6, загружает при работе двохядерный процессор Intel Core 2 Duo 2.33 ГГц максимум на 50% (так показывает Диспетчер задач). По хронологии использования ЦП вижу, что используются оба ядра, но не полностью (оба графика где-то на середине от максимума). Операционка XP SP2 32-х разрядная. Как можно сделать так, чтобы программа использовала процессор на 100 процентов? На сколько понимаю, в этому случае она будет работать вдвое быстрее. 
Заранее благодарен за советы.
PS. Задача выполняется долго, не думайте, что загружать нечем smile

Это сообщение отредактировал(а) NightWishMaster - 10.12.2007, 14:26
PM MAIL   Вверх
Lazin
Дата 10.12.2007, 14:54 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3820
Регистрация: 11.12.2006
Где: paranoid oil empi re

Репутация: 18
Всего: 154



А сколько в программе потоков?

Добавлено через 2 минуты и 32 секунды
Что-бы использовать процессор полностью, нужно что-бы программа при старте определила количество процессоров, и запустила нужное количество потоков(по кол. ядер), задача должна быть распаралелена на нужное количество потоков.
PM MAIL Skype GTalk   Вверх
NightWishMaster
Дата 10.12.2007, 19:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 41
Регистрация: 14.4.2006

Репутация: нет
Всего: нет



Цитата(Lazin @ 10.12.2007,  14:54)
А сколько в программе потоков?

Добавлено @ 14:56
Что-бы использовать процессор полностью, нужно что-бы программа при старте определила количество процессоров, и запустила нужное количество потоков(по кол. ядер), задача должна быть распаралелена на нужное количество потоков.

Программа построена по принципу MDI - одно основное окно и неограниченное количество дочерних окон. Код всех форм - и основной, и дочерних - по умолчанию выполняется в одном потоке, то есть по очереди. В каждом дочернем окне при воспроизведении в нем звука (а дочерние окна соответсвуют звуковым файлам) для докачки звуковых отсчетов в буферы DirectSound используется еще один поток, но он существует тольки при проигрывании и при остановке закрывается. Выходит, что единственная возможность получить выгоду с двох ядер - это сделать так, чтобы этот поток выполнялся на другом ядре, нежели основной поток программы?
А как можно определить, на каком ядре запущен основной поток программы и соответственно на каком ядре запускать вспомагательные потоки?
PM MAIL   Вверх
dumb
Дата 10.12.2007, 22:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


sceloglauxalbifacies
****


Профиль
Группа: Экс. модератор
Сообщений: 2929
Регистрация: 16.6.2006

Репутация: 32
Всего: 158



PM MAIL   Вверх
Sharkfire
Дата 10.12.2007, 23:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 236
Регистрация: 30.11.2006
Где: Одесса

Репутация: 2
Всего: 2



Важен ещё приоритет патока, если он низкий то винда не даст стока времени что бы убить процессор  smile 
PM MAIL ICQ   Вверх
dumb
Дата 11.12.2007, 10:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


sceloglauxalbifacies
****


Профиль
Группа: Экс. модератор
Сообщений: 2929
Регистрация: 16.6.2006

Репутация: 32
Всего: 158



Цитата(Sharkfire @  10.12.2007,  23:16 Найти цитируемый пост)
Важен ещё приоритет патока, если он низкий то винда не даст стока времени что бы убить процессор

в случае while(1);(и подобных, когда в цикле нет ожидания или слипов) приоритет на загрузку не повлияет. он повлияет лишь на "отзывчивость" остальных программ.
PM MAIL   Вверх
NightWishMaster
Дата 11.12.2007, 14:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 41
Регистрация: 14.4.2006

Репутация: нет
Всего: нет



Цитата(dumb @ 10.12.2007,  22:07)
Multiple Processors

Спасибо за линк, посмотрю.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++ Builder"
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по С++ Builder обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Настоятельно рекомендуем заглянуть в DRKB (Delphi Russian Knowledge Base) - крупнейший в рунете сборник материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C++ Builder | Следующая тема »


 




[ Время генерации скрипта: 0.0458 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.