powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Многопоточность и загрузка 8-и ядерного процессора
25 сообщений из 90, страница 3 из 4
Многопоточность и загрузка 8-и ядерного процессора
    #39844202
Соколинский Борис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Pcrepairну значит плохо пытаешься. нет плохих учеников, но есть плохие учителя(Ц) Иногда для педагогического эффекта требуются розги, причем не виртуальные.
...
Рейтинг: 0 / 0
Многопоточность и загрузка 8-и ядерного процессора
    #39844203
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Pcrepairнет плохих учеников, но есть плохие учителя(Ц)

Да, да, можешь и дальше самоутешаться этой инфантильной глупостью. Или таки включить мозг
и начать изучать как работает компьютер и программы.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Многопоточность и загрузка 8-и ядерного процессора
    #39844222
ёёёёё
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PcrepairKazantsev AlexeyВот так пытаешься помочь человеку, а он идиот...

ну значит плохо пытаешься. нет плохих учеников, но есть плохие учителя(Ц)
+1 000 000! Отличный девиз для неудачника.
...
Рейтинг: 0 / 0
Многопоточность и загрузка 8-и ядерного процессора
    #39844294
NetObserver
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Pcrepair
ну в общем работает. если запустить два раза(на разные базы конечно) то загрузка проца удваивается
Вот! Это показатель того, что программа написана с ошибкой в распараллеливании
потоков. Где-то есть бутылочное горлышко и потоки работают последовательно.
Проверяйте синхронизацию с основным потоком, возможно где-то неявная синхронизация, например выделение памяти или какой-то компонент.
...
Рейтинг: 0 / 0
Многопоточность и загрузка 8-и ядерного процессора
    #39844295
Фотография wolverin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Pcrepairну значит плохо пытаешься. нет плохих учеников, но есть плохие учителя(Ц)
интересный вы человек, вам предлагают варианты - вы не делаете ничего, но уже на 3 страницу перешли )
...
Рейтинг: 0 / 0
Многопоточность и загрузка 8-и ядерного процессора
    #39844315
Pcrepair
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
wolverinPcrepairну значит плохо пытаешься. нет плохих учеников, но есть плохие учителя(Ц)
интересный вы человек, вам предлагают варианты - вы не делаете ничего, но уже на 3 страницу перешли )

если удалить повторы-цитаты и просто треп не по делу останется не более одной страницы

но как говориться в таких случаях "нет у меня для вас других форумов"

Вот! Это показатель того, что программа написана с ошибкой в распараллеливании

программа очень простая:
- создается поток и ему передается несколько параметров(строки и числа)
- поток через трубу читает файл с ССД диска и определяет его статус
- копирует в другой каталог
- удаляет файл в первом каталоге
число потоков от 2 до 100, загрузка проца одинакова, меняется только размер занимаемой памяти
прога уже обработала несколько сот тысяч файлов без единого сбоя (исключение)
ага!
...
Рейтинг: 0 / 0
Многопоточность и загрузка 8-и ядерного процессора
    #39844323
Фотография X-Cite
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Pcrepair- создается поток и ему передается несколько параметров(строки и числа)

Когда вы перестанете мыслить низкоуровневыми примитивами типа потока, и начнете думать более высокоуровневыми такими как ITask.
Ведь и код проще и поддержка проще.
...
Рейтинг: 0 / 0
Многопоточность и загрузка 8-и ядерного процессора
    #39844328
Фотография X-Cite
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну вот пример
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
procedure TForm1.Test;
const
  Src = 'e:\DelphiTest\A';
  Dst = 'e:\DelphiTest\B\';
begin
  var Closure :=
    procedure (const aFileName: string)
    begin
      TTask.Run(
        procedure
        begin
          var FileContent := TFile.ReadAllBytes(aFileName);
          TFile.WriteAllBytes(Dst + TPath.GetFileName(aFileName), FileContent);
          TFile.Delete(aFileName);
        end
      );
    end;

  var Files := TDirectory.GetFiles(Src);
  for var FileName in Files do
    Closure(FileName);
end;



Я тут совершенно не понимаю, почему процессор должен быть загружен.
Положил в папку 35 файлов по 25 мб.
Ну перенеслись они за какое-то время... процессор тут при чем?
...
Рейтинг: 0 / 0
Многопоточность и загрузка 8-и ядерного процессора
    #39844329
Фотография X-Cite
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А вот если добавить
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
  var Closure :=
    procedure (const aFileName: string)
    begin
      TTask.Run(
        procedure
        begin
          var FileContent := TFile.ReadAllBytes(aFileName);
          // добавим чтобы нагрузить процессор
          for var ByteContent1 in FileContent do
            for var ByteContent2 in FileContent do
              if Random(10) < 5 then
                Break;

          TFile.WriteAllBytes(Dst + TPath.GetFileName(aFileName), FileContent);
          TFile.Delete(aFileName);
        end
      );
    end;



То и получим 100% на всех ядрах.
...
Рейтинг: 0 / 0
Многопоточность и загрузка 8-и ядерного процессора
    #39844334
Pcrepair
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
авторТо и получим 100% на всех ядрах. X-Cite

это все познавательно, занимательно и очень интересно(работа с диском). но не имеет никакого отношения к загрузке проца в моем случае
но все равно спасибо
...
Рейтинг: 0 / 0
Многопоточность и загрузка 8-и ядерного процессора
    #39844339
Фотография X-Cite
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PcrepairавторТо и получим 100% на всех ядрах. X-Cite

это все познавательно, занимательно и очень интересно(работа с диском). но не имеет никакого отношения к загрузке проца в моем случае
но все равно спасибо

автор1. Комп(i7 8 вирт. ядер; 8гб ОЗУ; ВЫНь7 х64; SSD для хранения данных; ХЕ10.2.3)

8 одновременных тасок с внутренними циклами загрузят все ядра на 100%.

Уберите вашу работу с потоками на таски и увидите результат.. Если конечно нет каких-то внутренних синхронизаций между ними и пока одна работает другие 7 ждут.
...
Рейтинг: 0 / 0
Многопоточность и загрузка 8-и ядерного процессора
    #39844378
Фотография wolverin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Pcrepairесли удалить повторы-цитаты и просто треп не по делу останется не более одной страницы
но как говориться в таких случаях "нет у меня для вас других форумов"

если удалить все ваши посты, потому что они вообще ниачем, то может и еще меньше станет
даже я погуглил варианты которые советуют разработчики крупных систем в вашей ветке - вы же не изучили ничего, все одно и то же городите как попугай, никакого анализа не сделано вами.
...
Рейтинг: 0 / 0
Многопоточность и загрузка 8-и ядерного процессора
    #39844391
Pcrepair
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
8 одновременных тасок с внутренними циклами загрузят все ядра на 100%
все таки задача не в том чтобы ПРОСТО загрузить проц на 100% а загрузить его на 100% задачами обработки данных. или имеется в виду
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
procedure Test;
begin
  var Closure :=
    procedure (const aFileName: string)
    begin
      TTask.Run(
        procedure
        begin
          //do something usefull
        end
      );
    end;
end;



типа заменить поток на задание?
...
Рейтинг: 0 / 0
Многопоточность и загрузка 8-и ядерного процессора
    #39844436
ziv-2014
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
X-CitePcrepairпропущено...
X-Cite

это все познавательно, занимательно и очень интересно(работа с диском). но не имеет никакого отношения к загрузке проца в моем случае
но все равно спасибо

автор1. Комп(i7 8 вирт. ядер; 8гб ОЗУ; ВЫНь7 х64; SSD для хранения данных; ХЕ10.2.3)

8 одновременных тасок с внутренними циклами загрузят все ядра на 100%.

Уберите вашу работу с потоками на таски и увидите результат.. Если конечно нет каких-то внутренних синхронизаций между ними и пока одна работает другие 7 ждут.
А 8 одновременно потоков с внутренними циклами не загрузят все ядра на 100%? ITask - это интерфейс, обертка над TThread и пулом потоков.
...
Рейтинг: 0 / 0
Многопоточность и загрузка 8-и ядерного процессора
    #39844458
Фотография X-Cite
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ziv-2014

Вызвать асинхронно метод который выполнчет работу проще для понимания, чем копаться в наследниках tthread.

Сама фраза передачи в поток строки и числа уже говорит о тотальном непонимании как это асе работает...
...
Рейтинг: 0 / 0
Многопоточность и загрузка 8-и ядерного процессора
    #39844462
Фотография wolverin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
X-CiteСама фраза передачи в поток строки и числа уже говорит о тотальном непонимании как это асе работает...
т.е. чтение из одной области памяти разными потоками вызывает блокировки?
...
Рейтинг: 0 / 0
Многопоточность и загрузка 8-и ядерного процессора
    #39844465
Фотография X-Cite
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wolverinX-CiteСама фраза передачи в поток строки и числа уже говорит о тотальном непонимании как это асе работает...
т.е. чтение из одной области памяти разными потоками вызывает блокировки?
Нет. С чего вдруг?
...
Рейтинг: 0 / 0
Многопоточность и загрузка 8-и ядерного процессора
    #39844468
ziv-2014
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
X-Citeziv-2014

Вызвать асинхронно метод который выполнчет работу проще для понимания, чем копаться в наследниках tthread.

Сама фраза передачи в поток строки и числа уже говорит о тотальном непонимании как это асе работает...
Я так полагаю вы тролите?
...
Рейтинг: 0 / 0
Многопоточность и загрузка 8-и ядерного процессора
    #39844487
Фотография wolverin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
X-CiteНет. С чего вдруг?
говорят тут про блокировки все, понять не могу где они )
...
Рейтинг: 0 / 0
Многопоточность и загрузка 8-и ядерного процессора
    #39844497
Фотография X-Cite
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я вам привел минимальный код который выполняет мнимую полезную работу согласно вашим пунктам и нагружает соответственно все ядра.
Читает файл. Что-то делает с ним. Записывает его в другое место и удаляет.
У меня hdd. Все работает в параллели и все ядра загружены.
...
Рейтинг: 0 / 0
Многопоточность и загрузка 8-и ядерного процессора
    #39845081
Фотография makhaon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кода, я так понимаю, мы так и не увидим
...
Рейтинг: 0 / 0
Многопоточность и загрузка 8-и ядерного процессора
    #39845799
cptngrb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
если автор уверен, что в его коде нет блокировок, то ...
был у меня случай на Windows Server какой-то, режим питания стоял по умолчанию и проц никак не хотел "грузиться", но поменяли план электропотребления и чудо произошло
...
Рейтинг: 0 / 0
Многопоточность и загрузка 8-и ядерного процессора
    #39845821
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Pcrepair"программа параллельно не работает, и грузит только ОДНО ядро" вот тут не понял, распределением нагрузки ОС же заведует и при много потоках ОС должна все ресурсы отдать. и что такое "программа параллельно не работает"
12% загрузки 8 ядерного процессора это 1/8 от 100% загрузки 8ядерного процессора.
Таким образом, реально загружено только 1 ядро из 8. То, что вы видите в диспетчере задач - ОС просто перекитывает ваш процесс с одного ядра на другое. И вы видите типа "пилу" на нескольких ядрах.
Если бы у вас хоть еще 1 ядро было дополнительно загружено, вы бы увидели общую загрузку процессора между 13 и 25%.

Если у вас в программе n потоков, но используется 1 ядро, это значит, что потоки параллельно не работают - где-то они затыкаются на монопольной синхронизации между потоками.

Для дельфи есть несколько примеров работы с потоками, которые реально распараллеливаются по ядрам.
...
Рейтинг: 0 / 0
Многопоточность и загрузка 8-и ядерного процессора
    #39845848
b0rk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Pcrepairпрограмма очень простая:
- создается поток и ему передается несколько параметров(строки и числа)
- поток через трубу читает файл с ССД диска и определяет его статус
- копирует в другой каталог
- удаляет файл в первом каталоге
число потоков от 2 до 100, загрузка проца одинакова, меняется только размер занимаемой памяти
прога уже обработала несколько сот тысяч файлов без единого сбоя (исключение)
ага!
давно известно, что обращение к диску (хоть HDD, хоть SDD) - это самая медленная операция. если вы упираетесь в скорость чтения/записи диска, то хоть в 100500 потоков запустите, все равно быстрее не станет. и, конечно, ожидать загрузки всех ядер процессора на 100% при дисковых операциях очень наивно.
...
Рейтинг: 0 / 0
Многопоточность и загрузка 8-и ядерного процессора
    #39845971
Фотография makhaon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как показывает практика, загрузить дисковую систему на 100% сложно, какие-то дополнительные телодвижения есть всегда, и они параллелятся вполне. Нужно подбирать очень особенную задачу наверно, чтобы от распараллеливания выигрыша вообще не было. Другое дело, что ожидать 100% загрузки ядер тоже не всегда стоит.
...
Рейтинг: 0 / 0
25 сообщений из 90, страница 3 из 4
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Многопоточность и загрузка 8-и ядерного процессора
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]