Как стать автором
Обновить

Комментарии 9

Если захочется оптимизировать пул потоков, то очень советую посмотреть видео-лекцию. В ней рассмотрены и очереди под каждый поток, и task stealing.

Спасибо за совет. Обязательно посмотрю

Замерять скорость пула потоков задачей которая упирается в память- плохая идея. Мне кажется если переписать вашу задачу в однонаправленный обход массива то производительность будет еще выше. Конечно надо еще смотреть на то, что генерирует компилятор, возможно нужны будут какие нибудь флаги для включения AVX

Я пробовал однонаправленный проход, но там задачи выполнялись слишком быстро и thread pool не давал прироста производительности или он был очень маленьким. Хотелось привести более наглядный пример, но при этом не слишком сложный. Я планирую в следующей статье более подробно с этим разобраться и придумать более наглядный пример

Берите любой алгоритм упирающийся в процессор а не память. Рекуррентные формулы например, там операнды влазят в регистры, так что память вообще не используется. Тогда увидите свой кратный прирост скорости.

Спасибо, попробую

НЛО прилетело и опубликовало эту надпись здесь

Это выглядит интересно, попробую поэксперементировать с данной версией

Предложения:

1) Возвращать пользователю task_id при добавление задачи. Сейчас пользователь просто добавляет задачу и не знает её task_id.

2) Добавить выводимый результат в wait_result. Сейчас даём ссылкой переменную через аргумент функции. А можно и не готовить специально заранее переменную, а просто её получать. https://github.com/skprpi/Habr/blob/main/thread_pool/best_version.cpp#L109

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории