Задать вопрос

Как освоить многопоточность?

За весь мой опыт работы практически не приходилось сталкиваться с многопоточностью. Соответственно нет опыта написания многопоточных приложений и решения задач на многопоточность. Хочу восполнить этот пробел. Посоветуйте какие-нибудь книги, учебники или сайты по теме. Желательно с учебными задачами, т.к. писать код полезнее, чем просто читать книгу. Что такое mutex знаю, пишу на C++.
  • Вопрос задан
  • 8925 просмотров
Подписаться 17 Оценить 2 комментария
Решения вопроса 1
Посмотри "Параллельное программирование на C++ в действии", Энтони Уильямс. Бумажную версию не рекомендую, очень неудобно читать — книжка толстая, а страницы маленькие, еще и переплет мягкий.
Ответ написан
Пригласить эксперта
Ответы на вопрос 5
foxmuldercp
@foxmuldercp
Системный администратор, программист, фотограф
Для примера можно взять и написать многопоточный конвертер фотографий с рекурсивной проходкой директорий в превьюшки для веба,
т.е на входе 100500 фотографий в raw формате, на выходе должно быть какое нить 1024х768.
ну и алгоритм соответствущий — скушать в список все файлы с raw, посмотреть на количество процессоров/потоков, распределить список картинок по потокам, запустить задачи, ну и контролировать от них обратно — прогресс выполнения.
я сейачс так на шарпе пытаюсь освоить
Ответ написан
Комментировать
opium
@opium
Просто люблю качественно работать
Крайне сложно, надо менять парадигму программирования в голове и больше думать про данные. А так проще всего начать писать простые бытовые программки с небольшой многопоточностью
Ответ написан
Комментировать
@xave
Сразу вспомнилась Java: Concurrency in Practice. С++ там и не пахнет, правда.
Ответ написан
Комментировать
andreycha
@andreycha
Поддерживаю ораторов выше — научиться этому можно только на практике. Надо писать и набивать шишки. По книгам не научишься.
Ответ написан
Комментировать
begemot_sun
@begemot_sun
Программист в душе.
А можно не использовать C++ с его дедлоками, и работой с памятью. Достаточно поменять инструмент решения проблемы. Например взять Erlang, где проблемы параллельного программирования сведены к минимуму + можно подключать C\C++\что-то еще вставки для быстродействия.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы