Re: Задачки на изучение многопоточности
От: Cyberax Марс  
Дата: 17.05.22 06:57
Оценка:
Здравствуйте, koenjihyakkei, Вы писали:

K>А накидайте плиз задачек для изучения многопоточности/атомиков. Или может уже есть где годные туториалы с практическими заданиями.

K>Спасибо.
https://docs.google.com/document/d/1X0lThx8OK0ZgLMqVoXiR4ZrGURHrXK6NyLRbeXe3Xac/edit#
Sapienti sat!
Re[5]: Задачки на изучение многопоточности
От: B0FEE664  
Дата: 23.05.22 12:33
Оценка:
Здравствуйте, qqqqq, Вы писали:

Q>Внезапно, у этих C++ потоков не оказалось возможности задать им приоритеты.

Встречный вопрос: зачем приоритеты могут понадобится?
И каждый день — без права на ошибку...
Re[6]: Задачки на изучение многопоточности
От: wl. Россия  
Дата: 23.05.22 16:34
Оценка:
Здравствуйте, B0FEE664, Вы писали:

BFE>Здравствуйте, qqqqq, Вы писали:


Q>>Внезапно, у этих C++ потоков не оказалось возможности задать им приоритеты.

BFE>Встречный вопрос: зачем приоритеты могут понадобится?

в играх например. Расчет кадра имеет больший приоритет, чем воспроизведение музыки
Re[7]: Задачки на изучение многопоточности
От: Marty Пират https://www.youtube.com/channel/UChp5PpQ6T4-93HbNF-8vSYg
Дата: 29.05.22 02:41
Оценка:
Здравствуйте, wl., Вы писали:

Q>>>Внезапно, у этих C++ потоков не оказалось возможности задать им приоритеты.

BFE>>Встречный вопрос: зачем приоритеты могут понадобится?

wl.>в играх например. Расчет кадра имеет больший приоритет, чем воспроизведение музыки


Мне примерно ноль раз нужно было расставлять приоритеты потокам
Маньяк Робокряк колесит по городу
Re[3]: Задачки на изучение многопоточности
От: DiPaolo Россия  
Дата: 01.06.22 08:40
Оценка:
K>Да не, теорию то я более менее знаю, мне бы именно какие-нибудь задачи.

K>Например, реализовать очередь single-reader/multiple-writer, но вот чем ее нагрузить... Или, например, задача на lock-free.


K>В общем, что сейчас самое распространенное в многопоточном программировании, где лучше всего можно руку набить?


K>ЗЫ: на текущей работе совсем не встречаюсь с канкаренси программированием, вот хотелось бы восполнить пробел.


Ну например (не из узкоспециализированного, а первое), что приходит в голову:

1) выкачать какой-то сайт (раньше такие проги были, которые позволяли скачать и читать потом сайт в офлайне). Идешь по ссылке, ищешь все ссылки на други страницы, кладешь в общее хранилище. Хранилище постоянно пополняется. Есть N потоков, которые парсят и качают страницы из хранилища, ну и пишут туда новые. Сначала делаешь простой путь в лоб, потом наворачиваешь оптимизации и играешься с весами задач, пулом потоков, оптимизируешь загрузку по ЦПУ и прочее, если интересно.

2) распарсить и построить DOM модель HTML-страницы (или JSON, или XML — не важно). Суть в том, чтобы начать с одной ноды (узла), а его дочерние раскидать по тредам. Ну и то же самое: добавляешь новые ноды в список код, с другой стороны есть пул тредов, которые перелопачивают эти ноды. После решения "в лоб" можно накручивать хитрости: проставлять веса в зависимости от ноды (может глубины вложенности внутри нее), подбирать оптимальное количество потоков и прочее.

3) вводишь два слова, и потом вычисляешь путь от первого до второго в википедии (все ссылки на первой странице, и с каждой последующей). Либо другой вариант: проверять теорию, что что все пути ведут к слову "философия" (https://ru.wikipedia.org/wiki/Все_пути_ведут_к_философии). Запускаешь парсинг, и считаешь, сколько по времени занимает переход до философии, а также сколько в сколько шагов это происходит. Тут то же самое: пул тредов, пул ссылок, а дальше — наворачивание логики, чтобы сделать максимально быстро и максимально загрузить ЦПУ, ну либо какие-то свои критерии "хорошести" придумать.

Реальной практической пользы в этих примерах маловато, но как идеи потренироваться, думаю, пойдет. Также скажу, что возможно я далек от оптимальных решений этих задач.

4) можно взять любую задачу из ТМО (теория массового обслуживания) и эмулировать работу касс в магазинах, склада с поставкой-отгрузкой товара, автомобильный трафик и прочее.

Также много узкоспециализированных задач типа каких-то математических вычислений, расчета графов, CAD-вычислений, заканчивая расчетами сцен в играх и их отрисовкой, а также задачами из мультимедиа (кодирование, декодирование и прочая отдача/прием видео из/в сети).
Re: Задачки на изучение многопоточности
От: Sazon  
Дата: 01.06.22 11:07
Оценка:
Здравствуйте, koenjihyakkei, Вы писали:

K>А накидайте плиз задачек для изучения многопоточности/атомиков. Или может уже есть где годные туториалы с практическими заданиями.


K>Спасибо.


Давно хотел почитать "Is Parallel Programming Hard, And, If So, What Can You Do About It?" (McKenney)
Сейчас ,наконец, решился, там как раз со счетчиков все начинается.
Re[7]: Задачки на изучение многопоточности
От: B0FEE664  
Дата: 03.06.22 15:22
Оценка:
Здравствуйте, wl., Вы писали:

Q>>>Внезапно, у этих C++ потоков не оказалось возможности задать им приоритеты.

BFE>>Встречный вопрос: зачем приоритеты могут понадобится?
wl.>в играх например. Расчет кадра имеет больший приоритет, чем воспроизведение музыки
Допустим, что приоритеты можно назначить. Какой эффект вы от этого ожидаете? Сначала проигрываем картинку, а потом звук? Так что ли?
И каждый день — без права на ошибку...
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.