Amir228
@Amir228

Стоит ли углубленно изучать многопоточность, асинхронное и паралельное программирование?

Стоит ли изучать многопоточность, асинхронное и паралельное программирование в .Net углубленно? Заметил что для углубленного изучение этих тем на русском есть лишь доки Майкрософт, все остальные источники дают базовые знания. Источники такие как книги(Шелдт С# 4.0, CLR via C#, "Конкурентность" Клири Стивен) и сайты (metanit, professorweb и еще парочку).
  • Вопрос задан
  • 390 просмотров
Решения вопроса 1
sergey-gornostaev
@sergey-gornostaev Куратор тега Многопоточность
Седой и строгий
Ваш вопрос можно без изменения смысла написать так "стоит ли вырастать из джунов" или "стоит ли становиться востребованным специалистом".
Ответ написан
Пригласить эксперта
Ответы на вопрос 3
Хочется ответить цитатой:
Нужно бежать со всех ног, чтобы только оставаться на месте, а чтобы куда-то попасть, надо бежать как минимум вдвое быстрее!
Ответ написан
Комментировать
mayton2019
@mayton2019
Bigdata Engineer
Тут есть два смысла. Первое - это "проскочить" на собеседовании. Если ты будешь его проходить
на дот-нетчика то полюбому что-нибудь спросят. Может попросят написать какую-то задачу с двумя
потоками где состояние потоков как-то разделяется или события от одного идут к другому.

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

Из параллелизма есть задача параллельного умножения двух больших матриц. Очень популярная
и многократно обсужденная почти во всех It-ресурсах.

И второй смысл - это просто знать способы распараллеливания медленно работающих задач.

Современные фреймворки - тяготеют к тому чтобы разработчик не встречался с задачей конкуренции.
Яркий пример - акторные фреймворки (Akka, Storm). А в задачах биг-даты - практически все
сводятся к map-reduce и если ты хорошо сделал partitioning для своих таблиц или файлов то тебе вообще
ничего делать не надо. Фреймворк сам позаботится. Добавляй только ему ресурсы (процессоры или ноды).

И любые задачи массовой обработки файлов и сетевых событий - автоматом поднимают проблему мультиптоточки.

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

Тоесть если будешь решать практические задачи - бери настоящие а не высосанные из пальца.
Ответ написан
Комментировать
iamkisly
@iamkisly
Собираю админки на dotnet и extjs
Что ты понимаешь под "углубленным изучением"? К примеру можно ограничиться чтением " Параллельного программирования С# и net core" Шакти Танвара. В тексте книги полно ошибок, но общее представление о тредах, тасках, мьютексах и семафорах, а так же о конкурентных коллекциях он даёт.

PS// Menanit и ProfessorWeb такие себе источники. Первый чрезвычайно попсовый и информация там местами устарела, а последний уличён в майнинге на юзерских машинах.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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