Хабрахабр

CLRium #6: Concurrency

Пятый был посвящен теме Garbage Collector и за 10 часов раскрыл всё, что только возможно, оставив за скобками совсем уж частные вопросы. Как вы уже заметили, формат семинара эволюционировал и принял новую форму: каждый последующий семинар теперь посвящается целиком и полностью какой-либо теме. А его кульминацией был доклад про практическое применение (вопрос, который интересует каждого — "зачем всё это знать??")

Вопросы эти — достаточно сложные, пугающие, а зачастую — вообще отталкивающие. Второй вопрос, который, как мне кажется, хочется знать всем, но на это, как правило, нет времени — это вопрос работы в многопоточном коде и вопрос планирования и поддержки его архитектуры. А ведь вокруг столько всего интересного 🙂 И ровно поэтому дальше простейших конструкций синхронизации обычный разработчик не уходит.

Другими словами, чтобы понимать, как работать с многопоточным кодом, надо знать все основы как минимум. Не так давно я понял одну казалось бы простую истину: чтобы понимать, как работают любые абстракции верхнего уровня, необходимо понимать, как работают абстракции нижнего уровня. После чего большинство абстракций верхнего уровня станут понятны автоматически.

NET, как это было ранее, но охватывает любые платформы (ведь многопоточный код работает на базе абстракций нижнего уровня) мы раскроем эту тему максимально подробно: На новом семинаре, который на этот раз касается не только платформы .

Основы

Ведь любые механики верхнего уровня работают на основе правил нижнего: опериционной системы и процессора. Для начала мы рассмотрим базу: всё, что уходит корнями в операционную систему. Сюда будут входить основы процессорной архитектуры, примитивы синхронизации и API операционных систем Windows и Linux.

BCL, Schedulers, Thread Locals, STA/MTA...

Эти абстракции есть везде, но примеры будут для платформы . Рассмотрев эти абстракции и рассмотрев правила работы с ними, мы перекинемся на базовые абстракции самой платформы: BCL, Thread Locals, пулы потоков и прочие основы. Мы увидим взаимосвязь с операционной системой, их производительность, а также применимость в различных ситуациях. NET.

Платформенные механики

С каждой новой абстракцией плюс ввиду того что все будет рассказано рядом: за один день, вы начнете связывать все знания между собой и мы плавно переключимся на различные механизмы более высокого уровня: планировщики, background, модели разработки многопоточного кода.

Lock-free алгоритмы

И в конце концов, мы рассмотрим более продвинутые алгоритмы работы с многопоточкой. вплоть до async/await. Мы сделаем разбор пары lock-free алгоритмов чтобы каждый из вас смог их создавать самостоятельно. 

PLINQ / async-await

Здесь я подразумеваю, что с самими библиотеками вы примерно знакомы и мы будем углубляться в каждую из них на несколько более хардкорном уровне. Далее, вобрав в себя знания основ, мы начнем изучать библиотки высоких уровней абстракций: от PLINQ вплоть до async/await, разбирая особенности работы с каждой.

Плюс это будет вредить качеству и запоминаемости. Конечно же, мы не сможем раскрыть тему Concurrency за один день: эта тема слишком обширна и многогранна. Но мы рассмотрим самые разные темы и поверьте: каждый из вас узнает очень много нового.

Теги
Показать больше

Похожие статьи

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Кнопка «Наверх»
Закрыть