Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Потоки... / 14 сообщений из 14, страница 1 из 1
27.04.2018, 19:07
    #39637702
CS_nub
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Потоки...
Доброго времени суток. Возник вопрос по потокам. На входе имеем массив от 0 до 99. Хочу обработать его в потоках. Например:

Код: pascal
1.
2.
3.
4.
TParallel.For(0, 99, procedure (iCount: Integer)
  begin
    Writeln(iCount / 7);
  end);



Сколько потоков будет создано на одноядерном проце? А сколько на 4-х ядерном? А сколько на 2-х головом серваке по 8 ядер на каждом?

А если я хочу всего 3 потока? Или 9. Как тогда организовать код, который будет создавать поток, передавать ему 0, после создавать второй поток, передавая ему 1, и наконец третий поток с 2 в передаваемом параметре? Дальше больше. Второй поток выполнил задачу. Осталось в работе 2 потока (1-й и 3-й). Значит я могу создать еще один поток и передать ему 3 и т.д...

Под рукой Delphi XE8.
...
Рейтинг: 0 / 0
27.04.2018, 19:46
    #39637715
makhaon
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Потоки...
CS_nub,

Могу сказать за либу, которую использую (STParallel).
Там количество потоков равно количеству процессоров (точнее голов):

Код: pascal
1.
2.
  tdn := GetProcessorNum;
  SetLength(fWorkers, tdn);



Можно поправить произвольно под себя. В этой записи прогрузить все потоки максимально равномерно не получится. Надо делать честный пулл потоков и раздавать ему задания по мере выполнения.
...
Рейтинг: 0 / 0
27.04.2018, 20:17
    #39637722
X-Cite
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Потоки...
...
Рейтинг: 0 / 0
27.04.2018, 20:24
    #39637725
чччД
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Потоки...
CS_nub...А если я хочу всего 3 потока? Или 9...
Да пошли ты их в попу вместе с их мультитредным волшебством, "ускорится-не ускорится", пиши руками, создавай сколько хочет твоя левая пятка, ничего заумного там нет.
...
Рейтинг: 0 / 0
27.04.2018, 20:28
    #39637727
defecator
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Потоки...
чччДCS_nub...А если я хочу всего 3 потока? Или 9...
Да пошли ты их в попу вместе с их мультитредным волшебством, "ускорится-не ускорится", пиши руками, создавай сколько хочет твоя левая пятка, ничего заумного там нет.
да
...
Рейтинг: 0 / 0
28.04.2018, 06:39
    #39637810
CS_nub
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Потоки...
чччДДа пошли ты их в попу вместе с их мультитредным волшебством, "ускорится-не ускорится", пиши руками, создавай сколько хочет твоя левая пятка, ничего заумного там нет.


Не сталкивался особо с потоками. Не, создавал пару тройку никак не связанных с собой тредов для обработки в фоне какой-нить муры, но исключительно в режиме "отработал и умер". А здесь надо создать N-потоков, следить за каждым, при завершении любого родить еще один и передать ему следующий элемент для обработки. Не могу пока в бошке выстроить блок-схему.

А если понизить дельфю до 2007 (официально куплена) без всяких новомодных TTask и пр. то совсем грустно становится :(
...
Рейтинг: 0 / 0
28.04.2018, 08:27
    #39637836
zinpub
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Потоки...
CS_nub,

OTL ?
...
Рейтинг: 0 / 0
28.04.2018, 08:51
    #39637840
CS_nub
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Потоки...
zinpubCS_nub,

OTL?


Готовая либа это очень неплохо, но пока не открылся отдел "пиво-воды" попробую сам чо-нить посочинять, а там поди отпустит... :)

з.ы. Пакет скачал, поизучаю.
...
Рейтинг: 0 / 0
28.04.2018, 09:17
    #39637856
zinpub
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Потоки...
CS_nub,
Найди книжку "Parallel Programming with OmniThreadLibrary" - Он там и расжёвывает всё, и вообще много дельного про многопоточку пишет
...
Рейтинг: 0 / 0
28.04.2018, 10:47
    #39637909
defecator
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Потоки...
zinpubOmniThreadLibrary
http://rgho.st/8tq7jdWZx
...
Рейтинг: 0 / 0
28.04.2018, 12:13
    #39637972
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Потоки...
CS_nubздесь надо создать N-потоков, следить за каждым, при завершении любого родить еще один и
передать ему следующий элемент для обработки.

Не надо.

CS_nubНе могу пока в бошке выстроить блок-схему.

Бери готовый паттерн producer-consumer, сваливай свои элементы в очередь и запускай
консумеров сколько хочешь.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
28.04.2018, 22:00
    #39638218
makhaon
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Потоки...
CS_nub,

Я уже несколько раз кидал библиотеку STParallel. Можно поискать. Она компактная, простая и должна работать скорее всего и на 2007-м тоже.
...
Рейтинг: 0 / 0
03.03.2019, 14:57
    #39781517
X11
X11
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Потоки...
zinpubCS_nub,
Найди книжку "Parallel Programming with OmniThreadLibrary" - Он там и расжёвывает всё, и вообще много дельного про многопоточку пишет

Может кому пригодится

"Parallel Programming with OmniThreadLibrary" was updated for OTL 3.07.7.

E-book: https://leanpub.com/omnithreadlibrary

Print: http://www.lulu.com/shop/http://www.lulu.com/shop/primoz-gabrijelcic/parallel-programming-with-omnithreadlibrary/hardcover/product-24004950.html

Web: http://www.omnithreadlibrary.com/book/
...
Рейтинг: 0 / 0
04.03.2019, 15:51
    #39782065
Arioch
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Потоки...
у OTL есть две особенности

1) только новые Delphi, с минимально работоспособными генериками ( т.е. в 2009 и ранее можно даже не пробовать )

2) только Windows (хотя кто-то собирался портировтаь на FPC/Linux когда-то)

Если это не мешает, то как почти всегда сторонняя библиотека лучше, чем её дельфийская копия
...
Рейтинг: 0 / 0
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Потоки... / 14 сообщений из 14, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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