Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности

Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
|
24.05.2021, 15:42
|
|||
|---|---|---|---|
|
|||
Delphi 7 на многопроцессорном компьютере |
|||
|
#18+
Доброго дня! Имеется ли какая-либо возможность заставить многопоточное приложение, компилированное на Delphi 7 заставить работать на многопроцессорном компьютере, так, что-бы процессы работали на других ядрах, отличных от основного потока? Всего потоков - штук 60, реально работают 12 - 15. На картинке видно - загружается только 1 процессор, остальные еле-еле шевелятся. В главном окне мышь реагирует через 10-15 секунд :( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
24.05.2021, 15:52
|
|||
|---|---|---|---|
|
|||
Delphi 7 на многопроцессорном компьютере |
|||
|
#18+
24.05.2021 15:42, BorodaOleg пишет: > Имеется ли какая-либо возможность заставить многопоточное приложение, компилированное на Delphi 7 заставить работать на многопроцессорном компьютере, так, что-бы процессы работали на других ядрах, отличных от основного потока? Всего потоков - штук 60, реально работают 12 - 15. На картинке видно - загружается только 1 процессор, остальные еле-еле шевелятся. В главном окне мышь реагирует через 10-15 секунд :( Этим занимается планировщик Винды. Если есть непреодолимое желание ему помешать, играйся с SetThreadAffinityMask() Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
24.05.2021, 15:53
|
|||
|---|---|---|---|
Delphi 7 на многопроцессорном компьютере |
|||
|
#18+
BorodaOleg, Открой для себя потоки и TThread. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
24.05.2021, 15:57
|
|||
|---|---|---|---|
|
|||
Delphi 7 на многопроцессорном компьютере |
|||
|
#18+
BorodaOleg> Имеется ли какая-либо возможность заставить BorodaOleg> многопоточное приложение ... работать на BorodaOleg> многопроцессорном компьютере, так, что-бы BorodaOleg> процессы работали на других ядрах, отличных от основного потока? Заставлять обычно нет нужды, планировщик ОС сам знает какой поток когда и куда кинуть. См. в коде, есть ли привязка к процессору (ну и может у тебя реально вся работа в основном потоке делается, а остальные ждут). Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
24.05.2021, 16:08
|
|||
|---|---|---|---|
Delphi 7 на многопроцессорном компьютере |
|||
|
#18+
Если в одном приложении куча потоков, которые занимаются вычислениями, то лучше поставить им приоритет Lower, тогда главный поток программы не будет подвисать. При этом приоритет Lower никак не будет мешать ходу вычислений (при таком количестве ядер). И желательно до минимума сократить работу с динамическими массивами, строками, как можно реже создавать/уничтожать объекты, вызывать GetMem, FreeMem. Или подключить многопоточный менеджер памяти, например tcMalloc (не знаю, как он прицепится к Delphi 7). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
24.05.2021, 16:12
|
|||
|---|---|---|---|
Delphi 7 на многопроцессорном компьютере |
|||
|
#18+
BorodaOleg, Ищи Synchronize, Люк! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
24.05.2021, 16:15
|
|||
|---|---|---|---|
Delphi 7 на многопроцессорном компьютере |
|||
|
#18+
BorodaOleg заставить работать на многопроцессорном компьютере, так, что-бы процессы работали на других ядрах Нельзя. Это делает операционная система. В теории, можно спуститься на более низкий уровень, но это не правильный путь. BorodaOleg Всего потоков - штук 60, реально работают 12 - 15. На картинке видно - загружается только 1 процессор Значит они реально не работают и написаны очень плохо. Напиши лабу с TStuppidThread и создай 10 потоков. Код: pascal 1. 2. 3. 4. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
24.05.2021, 16:26
|
|||
|---|---|---|---|
Delphi 7 на многопроцессорном компьютере |
|||
|
#18+
Valery_B Значит они реально не работают и написаны очень плохо. Ну я так и сказал, что человеку надо открыть для себя потоки. ;) Скриншот таск мэнеджера об этом говорит вполне очевидно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
24.05.2021, 16:38
|
|||
|---|---|---|---|
|
|||
Delphi 7 на многопроцессорном компьютере |
|||
|
#18+
Юмористы, млин :) Synchronize нет, все делается через CriticalSection, TThreadList, Semaphore и пр. В потоках - коннект с COM/GSM/GPRS соединениями, несложная обработка (расшифровка HEX последовательностей от 15 до 1000 байт) и запись в БД firebird. Отдельным потоком лог - тут понятно, жрет не мелко. Если бы винда нормально распределила было бы как минимум 3 потока с "запредельными" нагрузками - Основной поток, лог и FB - сейчас только один и загружен по шею. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
24.05.2021, 16:46
|
|||
|---|---|---|---|
|
|||
Delphi 7 на многопроцессорном компьютере |
|||
|
#18+
BorodaOleg В потоках - коннект с COM/GSM/GPRS соединениями, несложная обработка (расшифровка HEX последовательностей от 15 до 1000 байт) и запись в БД firebird. Отдельным потоком лог - тут понятно, жрет не мелко. А чему тут жрать-то? Если загрузки нет, ищи блокировки главного потока ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
24.05.2021, 16:46
|
|||
|---|---|---|---|
|
|||
Delphi 7 на многопроцессорном компьютере |
|||
|
#18+
24.05.2021 16:38, BorodaOleg пишет: > и запись в БД firebird. какой коннект? какой протокол? сколько коннектов у процесса? Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
24.05.2021, 16:46
|
|||
|---|---|---|---|
Delphi 7 на многопроцессорном компьютере |
|||
|
#18+
BorodaOleg, Проблема не в винде а в твоем коде. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
24.05.2021, 16:50
|
|||
|---|---|---|---|
|
|||
Delphi 7 на многопроцессорном компьютере |
|||
|
#18+
BorodaOleg Если бы винда нормально распределила BorodaOleg сейчас только один и загружен по шею. BorodaOleg В главном окне мышь реагирует через 10-15 секунд :( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
24.05.2021, 16:52
|
|||
|---|---|---|---|
Delphi 7 на многопроцессорном компьютере |
|||
|
#18+
При создании каждого потока пишите в лог ThreadId и название класса объекта-потока. Потом откройте ProcessExplorer, откройте для Вашего процесса список потоков и смотрите на загрузку. По ID потока сможете определить, что это за поток и отдельно исследовать, почему он так грузит процессор. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
24.05.2021, 16:56
|
|||
|---|---|---|---|
Delphi 7 на многопроцессорном компьютере |
|||
|
#18+
авторОтдельным потоком лог - тут понятно, жрет не мелко. Нужно обязательно буферизовать данные перед записью в лог-файл. Т.е. не писать в лог-файл каждую строку отдельно, а сначала соединить все строки, которые требуется записать, и сохранить их в лог одним действием. У меня в программе очень большой объем записи в лог, но я не могу сказать, что в этом месте есть какая-то проблема с производительностью. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
24.05.2021, 17:12
|
|||
|---|---|---|---|
|
|||
Delphi 7 на многопроцессорном компьютере |
|||
|
#18+
Битва экстрасенсов, мля... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
24.05.2021, 17:13
|
|||
|---|---|---|---|
|
|||
Delphi 7 на многопроцессорном компьютере |
|||
|
#18+
DmSer, Спасибо за совет. ThreadId и ThreadHandle собираю в TList уже давно, не думал что они совпадают c системными. А с логом точно что-то делать нужно, и да, пишется он по 1 строчке ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
24.05.2021, 17:16
|
|||
|---|---|---|---|
Delphi 7 на многопроцессорном компьютере |
|||
|
#18+
ThreadId - глобальный, ThreadHandle - у каждого процесса независимая нумерация хэндлов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
24.05.2021, 17:17
|
|||
|---|---|---|---|
Delphi 7 на многопроцессорном компьютере |
|||
|
#18+
BorodaOleg Если бы винда нормально распределила было бы как минимум 3 потока с "запредельными" нагрузками - Основной поток, лог и FB - сейчас только один и загружен по шею. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
24.05.2021, 17:24
|
|||
|---|---|---|---|
|
|||
Delphi 7 на многопроцессорном компьютере |
|||
|
#18+
YuRock BorodaOleg Если бы винда нормально распределила было бы как минимум 3 потока с "запредельными" нагрузками - Основной поток, лог и FB - сейчас только один и загружен по шею. Попахивает "вредными советами" от Остера :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
24.05.2021, 17:39
|
|||
|---|---|---|---|
Delphi 7 на многопроцессорном компьютере |
|||
|
#18+
DarkMaster YuRock пропущено... Ну, чтож.. Переустанови винду, раз она плохо потоки менеджерит. Я бы так и сделал, будь у меня такие проблемы! Попахивает "вредными советами" от Остера :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
24.05.2021, 17:53
|
|||
|---|---|---|---|
Delphi 7 на многопроцессорном компьютере |
|||
|
#18+
YuRock Ну, чтож.. Переустанови винду, раз она плохо потоки менеджерит. Я бы так и сделал, будь у меня такие проблемы! Надо еще железо новое купить. Обязательно с NVidia RTX 3090, а то без рей-трейсинга многопоточность будет не полной. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
24.05.2021, 17:54
|
|||
|---|---|---|---|
|
|||
Delphi 7 на многопроцессорном компьютере |
|||
|
#18+
24.05.2021 17:53, rgreat пишет: > > Обязательно с NVidia RTX 3090, а то без рей-трейсинга многопоточность будет не полной. кстати, да! поддерживаю. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
24.05.2021, 18:08
|
|||
|---|---|---|---|
Delphi 7 на многопроцессорном компьютере |
|||
|
#18+
BorodaOleg, Если нет Synchronize, то надо выяснить на чем тормозит главный поток: жми паузу (Run\Program Pause) и изучай стек главного и прочих потоков (View\Debug Windows\Threads) и возможно там увидешь скрытый Synchronize! от какого нить комопнента с свойством RunEventInMainThread ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
24.05.2021, 18:32
|
|||
|---|---|---|---|
|
|||
Delphi 7 на многопроцессорном компьютере |
|||
|
#18+
Мимопроходящий 24.05.2021 17:53, rgreat пишет: > > Обязательно с NVidia RTX 3090, а то без рей-трейсинга многопоточность будет не полной. кстати, да! поддерживаю. Эх... Жаль у него D7, а не Лазарь + Дельфя :( Советов бы было больше...... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|

start [/forum/topic.php?fid=58&mobile=1&tid=2037296]: |
0ms |
get settings: |
9ms |
get forum list: |
11ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
164ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
61ms |
get tp. blocked users: |
1ms |
| others: | 289ms |
| total: | 555ms |

| 0 / 0 |
