Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 30.06.2009, 07:43   #1
Iong
Пользователь
 
Регистрация: 30.06.2009
Сообщений: 39
По умолчанию Многопроцессорное приложение на делфи

Уважаемые программисты подскажите пожалуйста как создать на Borland Delphi 7, приложение использующее весь процессор компьютера, ну допустим не одно ядро, как это делают созданные программы по умолчанию. А два ядра, и более.
Надеюсь на вашу помощь.
Iong вне форума Ответить с цитированием
Старый 30.06.2009, 08:00   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Если не секрет что это приложение будет делать?
Насколько я знаю система сама определят какой процессор лучше задействовать.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 30.06.2009, 08:14   #3
Iong
Пользователь
 
Регистрация: 30.06.2009
Сообщений: 39
По умолчанию

Не секрет. Она делает математические вычисления, а если быть точным то умножение, имеет 2 цикла "репит" и штук 5 условий.
Ну вот на счет загрузки цп, у меня 2 компа, один однопроцессорный, частота 850 Мгц на нем запускаю, она грузит его на 100%. На втором компе процессор на 2 ядра, частота 3 Ггц. На нем запускаю она занимает ровно 50% от мощности ЦП. По диспетчеру задач смотрю. И там же графики загрузки ЦП Показывают что только одно ядро напрягается а другое вообще дурака валяет, то есть бездействует, ну не совсем, его на 2-3% операционная система загружает и всё. Сразу отвечаю на вопрос: дак ей наверно больше и не нужно вычислительных мощностей. Ответ: еще как нужно. Она работает так, чем больше вычислительная мощность компьютера, тем быстрее она обрабатывает данные операции. И еще, при запуске даже на 2-х ядерном компе она "не отвечает", ну то есть диспетчер задач видит ее так, но на самом деле она функционирует.
Iong вне форума Ответить с цитированием
Старый 30.06.2009, 08:39   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Iong
Хм... Думаю тебе будет достаточно выбить HIGH приоритет для программы.
Вот пример в Delphi World:
Код:
procedure TForm1.Button1Click(Sender: TObject);
 var
   MainThread: THandle;
 begin
   MainThread := GetCurrentThread;
   SetThreadPriority(MainThread, THREAD_PRIORITY_HIGHEST);
 end;
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 30.06.2009, 08:48   #5
Iong
Пользователь
 
Регистрация: 30.06.2009
Сообщений: 39
По умолчанию

Попробую этот код. Кстати, это не одно и то же с приоритетом который можно поставить в диспетчере задач?
Iong вне форума Ответить с цитированием
Старый 30.06.2009, 08:51   #6
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Это как раз одно и то же
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 30.06.2009, 08:53   #7
profi
Участник клуба Подтвердите свой е-майл
 
Регистрация: 19.11.2007
Сообщений: 1,022
По умолчанию

Если я не ошибаюсь, нельзя сделать так что бы процессор обрабатывал только одну программу. Процессорное время (квант времени) равномерно распределяется для всех запущенных процессов. Stilet верно вам подсказал с преоритетом. И то, если поставить вашей программе наивысший приоритет, тогда другим процессам ничего не останется и компьютер зависнит.
profi вне форума Ответить с цитированием
Старый 30.06.2009, 09:13   #8
Iong
Пользователь
 
Регистрация: 30.06.2009
Сообщений: 39
По умолчанию

Дак я и не хочу что бы он только одну мою программу обрабатывал, хочу перейти этот предел в 50%, то есть одно ядро.
Пробовал код который привел стайлет, ни каких результатов. Как 50% загружал процессор так и осталось. Пробовал через диспетчер задач поставить максимальный приоритет, та же фигня. Выше 50% загрузка ЦП не поднимается.

Кстати. Сейчас с соответствием поэксперементировал. Это тоже в диспетчере задач. Пкм на процесс и команда "задать соответствие..." там 2 CPU. 0 и 1 включаю оба на этот процесс. Во вкладки "быстродействие" загруженно одино из 2 ядер. Ставлю быстродействие на одно ядро, оно и становится загруженно, так же и с другим. Значит они оба могут обрабатывать одно и то же. А когда вместе задействую ядра, в меню "соответствие" то на графиках в закладки "быстродействие" только одно ядро на все 100% загруженно, а другое на 1% системой.
Кстати, винда хр, сервис пак 3. Это так, для общей информированности.

Последний раз редактировалось Stilet; 30.06.2009 в 10:12.
Iong вне форума Ответить с цитированием
Старый 30.06.2009, 10:19   #9
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Выше 50% загрузка ЦП не поднимается.
Значит ОС за тебя решает как ей лучше...
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 30.06.2009, 10:45   #10
Iong
Пользователь
 
Регистрация: 30.06.2009
Сообщений: 39
По умолчанию

Да не может быть такого что бы нельзя было загрузку выше поднять. И я лучше знаю как ей лучше :-) должен же быть способ.
Iong вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Код игры на Паскале и на Делфи сильно отличается? Как переписать код с Паскаля в Делфи? Mclaren Помощь студентам 2 27.04.2009 22:37
готовое приложение ComeToDaddy Помощь студентам 17 03.04.2009 18:25
консольное приложение user_jasser Общие вопросы Delphi 3 17.10.2008 12:17
Консольное приложение a_priori Общие вопросы Delphi 6 12.03.2008 08:33
Пароль на приложение Chals Общие вопросы Delphi 6 24.11.2007 21:32