powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Потоки...
14 сообщений из 14, страница 1 из 1
Потоки...
    #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
Потоки...
    #39637715
Фотография makhaon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CS_nub,

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

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



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


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

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

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

OTL?


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

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

Не надо.

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

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

Я уже несколько раз кидал библиотеку STParallel. Можно поискать. Она компактная, простая и должна работать скорее всего и на 2007-м тоже.
...
Рейтинг: 0 / 0
Потоки...
    #39781517
Фотография 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
Потоки...
    #39782065
Arioch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
у OTL есть две особенности

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

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

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


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