Войти
ПрограммированиеФорумОбщее

Thread Pool без пересоздания тредов в C++ (2 стр)

Страницы: 1 2
#15
3:16, 6 ноя. 2019

https://github.com/BlackMATov/promise.hpp/blob/master/headers/pro… pp/jobber.hpp

Вариант простого тред-пула выполненного как сэмпл для промисов. Там можно и окончания результатов подождать и вот это всё.


#16
3:20, 6 ноя. 2019

gamedevfor
> а что не так?
Да так, неохотно расписывать. Так уж и быть, поверю, что у тебя он хороший)

#17
3:27, 6 ноя. 2019

MATov
Интересное чтиво. А с какой целью писались кастомные промисы и проч?

#18
14:35, 6 ноя. 2019

MATov
Пул можно (и нужно) делать без шаблонов, так как он должен быть гибким в рантайме.

#19
14:44, 6 ноя. 2019

gamedevfor
> делать без шаблонов, так как он должен быть гибким в рантайме
Не поспоришь

#20
15:32, 6 ноя. 2019

Сделал так:

https://bitbucket.org/nshatokhin/crimsonfork/src/master/src/pools/ThreadPool.h

#21
18:27, 6 ноя. 2019

Robotex
> Сделал так:
Одна очередь на все потоки это не самое лучшее решение. Сделай хотя бы 8 потоков и они все будут ждать друг друга когда освободится мютекс.
По моим тестам идеальный вариант - одна очередь на 3 потока, больше нужно только если совсем мелкие таски.

Лучше уж взять готовый вариант, например https://github.com/cpp-taskflow/cpp-taskflow там у каждого треда своя очередь + work stealing чтоб забирать таски из других потоков, если больше нечего процессить.

#22
18:39, 6 ноя. 2019

/A\
> По моим тестам идеальный вариант - одна очередь на 3 потока, больше нужно
> только если совсем мелкие таски.

Для мелких тасок лучше держать отдельный поток.

#23
19:10, 6 ноя. 2019

gamedevfor
> Пул можно (и нужно) делать без шаблонов, так как он должен быть гибким в
> рантайме.

Кому можно, кому нужно? Каждый дрочит как хочет, цели и нужды разные, подходы соответственно тоже.

maks242
> А с какой целью писались кастомные промисы и проч?
Родные не про то просто (then нету, например)
#24
20:31, 6 ноя. 2019

Идиотский вопрос: я же правильно понимаю, что если чтение и запись переменной (например, элемента массива) происходит только в одном треде, то никакие локи не требуются? И аналогично, если одна переменная только считывается с разных тредах, но никем не изменяется, то тоже не нужны никакие локи и атомики? Локи только для записи, я прав?

#25
20:38, 6 ноя. 2019

Robotex
На все 100%)

Страницы: 1 2
ПрограммированиеФорумОбщее