Рубрика «Блог компании Семинары Станислава Сидристого»

Ниже представлена не простая расшифровка доклада с семинара CLRium, а переработанная версия для книги .NET Platform Architecture. Той её части, что относится к потокам.

Потоки и планирование потоков

Что такое поток? Давайте дадим краткое определение. По своей сути поток это:

  • Средство параллельного относительно других потоков исполнения кода;
  • Имеющего общий доступ ко всем ресурсам процесса.

Очень часто часто слышишь такое мнение, что потоки в .NET — они какие-то абсолютно свои. И наши .NET потоки являются чем-то более облегчённым чем есть в Windows. Но на самом деле потоки в .NET являются самыми обычными потоками Windows (хоть Windows thread id и скрыто так, что сложно достать). И если Вас удивляет, почему я буду рассказывать не-.NET вещи в хабе .NET, скажу вам так: если нет понимания этого уровня, можно забыть о хорошем понимании того, как и почему именно так работает код. Почему мы должны ставить volatile, использовать Interlocked и SpinWait. Дальше обычного lock дело не уйдёт. И очень даже зря.

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

Задача процессора — просто исполнять код. Поэтому с точки зрения процессора есть только один поток: последовательное исполнение команд. А задача операционной системы каким-либо образом менять поток т.о. чтобы эмулировать несколько потоков. Читать полностью »

CLRium #7: Практический. Семинар, домашние задания с проверкой, менторинг - 1

18 апреля 2020 в Санкт-Петербурге и 16 мая в Москве пройдёт семинар по платформе .NET CLRium #7 на котором мы продолжим тему многопоточки: на этот раз с точки зрения практики. Первую часть посетило более 700 человек. Основные темы семинара (программа формируется):

  • Архитектура распараллеленного кода
  • Тестирование распараллеленного кода, алгоритмов и примитивов синхронизации
  • Отладка распараллеленного кода

И в этот раз семинар будет в некотором смысле двухнедельным:

  • Сам семинар будет идти день;
  • После чего вы получите домашние задания и мы в течение двух недель будем их вместе решать, проверять и давать советы по их улучшению (также будет создана группа в Телеграмм для их динамичного обсуждения);

Также возможна работа в формате собеседований с личным ментором

Читать полностью »

29-30 ноября в Санкт-Петербурге и 06-07 декабря — в Москве мы запустим шестой семинар по .NET. У нас будет: 700 слушателей, огромные залы, много кофе и зудящее чувство знаний. Чтобы собрать рекордно-длинную программу и количество слушателей мы работали рекордные 5 месяцев. До старта — 9 дней.

CLRium #6: 9 дней до старта - 1

Читать полностью »

Совсем скоро, 29-30 ноября в Санкт-Петербурге и 06-07 декабря — в Москве мы запустим шестой семинар по .NET. На этот раз — по теме многопоточки и конкурентности. Мы уже писали об этом пару раз на Хабре, но сегодня есть отдельный повод для этого: на семинаре настоящий эксклюзив. Будет описана работа гибридного примитива синхронизации: Monitor. Да, всем привычная вещица достойна отдельного доклада. Ведь он в своей работе учитывает и частоту процессора и количество ядер, учитывает lock convoy/starvation и вообще, очень сложен.

А в конце статьи развлечения ради предложу пройти парочку QUIZов по многопоточке.

Недостаточно знать, что такое Mutex, Semaphore и async-await. Надо знать всё, начиная с квантов - 1

Читать полностью »

CLRium #6: Concurrency & Parallelism. Два дня: от процессора до async-await - 1

Совсем скоро, 29-30 ноября в Санкт-Петербурге и 06-07 декабря — в Москве мы запустим шестой семинар по .NET. В рамках семинара мы полным ходом изучаем вопросы многопоточности, которые на самом деле очень и очень сложны. Программа немного меняется, но получается очень хардкорной для вас и волнительной — для нас. Я расширил описание уровня ОС до трёх слотов: теперь там можно будет почерпнуть:

  • Кванты времени, их длину, выбор их длины, изменение настроек системы так, чтобы выбрать длину квантов времени
  • Динамическое повышение приоритетов потоков и длин квантов в зависимости от разных условий: от признака нахождения окна на переднем плане до освобождения блокировок
  • Разработка собственного планировщика UMS потоков

и многое другое. Кофе будет много.

Читать полностью »

C 23 по 25 сентября пройдет онлайн-конференция Microsoft .NET Conf. Что ожидается на конференции? Все темы можно посмотреть на сайте конференции, а ниже я представил наиболее значимые доклады:

  • Что нового в C# 8? (два доклада)
  • Переводим настольные .NET приложения на .NET Core
  • Разрабатываем Full-stack C# Вэб-приложения с Blazor и .NET Core 3. (по Blazor 3 доклада)
  • Разработка Cloud Native Apps с .NET Core 3.0 и Kubernetes
  • Entity Framework Core 3.0
  • Перерождение Visual Studio for Mac
  • Durable Functions 2.0 — Serverless Actors, Orchestrations, and Stateful Functions
  • Awesome games with .NET, Visual Studio 2019 and Unity 2019
  • и многое-многое другое

Не пропускаем, смотрим по мере возможности. Доклады будут очень интересными.

C 23 по 25 сентября пройдёт .NET Conf 2019 - 1Читать полностью »

Этот пост — попытка достучаться до издательств. Чтобы те услышали и отнеслись к своим переводам более ответственно.

За свой пусть разработчика я купил много различных книг. Книг самых разных издательств. И малых и больших. Прежде всего — больших издательств, у которых есть возможности вложиться в перевод технической литературы. Это были самые разные книги: все мы прошли или проходим через путь поиска себя. И все эти книги объединяло одно: они были переведены так, что их невозможно было читать. Со временем, конечно, привыкаешь и к переводу терминов (про себя переводя на те, которые используются повседневно) и к ломаному стилю изложения, по которому видно что этот текст взят с английского. Однако, нет привычки к цене, которую просят издательства за популярные издания.

Нам не нужны правки перевода: нашему переводчику виднее, как это должно переводиться - 1
В конце — маленькая голосовалка

Читать полностью »

В данной статье вы встретите сразу два источника информации:

  1. Полный курс по работе Garbage Collector на русском языке: CLRium #6 (текущий семинар здесь)
  2. Перевод статьи из BOTR "Устройство сборщика мусора" от Маони Стевенс.

Garbage Collector. Полный курс + перевод из BOTR - 1

Читать полностью »

Введение

Несколько лет назад, мы решили, что настало время поддержать SIMD код в .NET. Мы представили пространство имен System.Numerics с типами Vector2, Vector3,Vector4 и Vector<T>. Эти типы представляют API общего назначения для создания, доступа и оперирования векторными инструкциями, когда это возможно. Они, так же, обеспечивают программную совместимость для тех случаев, где аппаратное обеспечение не поддерживает подходящих инструкций. Это позволило, с минимальным рефакторингом, векторизовать ряд алгоритмов. Как бы там ни было, общность такого подхода делает его сложным в применении с целью получения полного преимущество от всех доступных, на современном аппаратном обеспечении, векторных инструкций. В дополнении, современное аппаратное обеспечение предоставляет ряд специализированных, не векторных, инструкций, которые могут значительно улучшать производительность. В этой статье я расскажу, как мы обошли эти ограничения в .NET Core 3.0.

Поддержка аппаратно-специфичных инструкций в .NET Core (теперь не только SIMD) - 1
Примечание: пока ещё нет устоявшегося термина для перевода Intrisics. В конце статьи есть голосовалка за вариант перевода. Если выберем хороший вариант, статью изменим

Читать полностью »

Совсем скоро, 29-30 ноября в Санкт-Петербурге и 06-07 декабря — в Москве мы запустим шестой семинар по .NET. На этот раз — по теме многопоточки и конкурентности. Мы уже писали об этом пару раз на Хабре, но сегодня — День Программиста и есть отличный повод дать вам всем комплимент: скидку на его посещение.

CLRium #6: Парный доклад про Lock-Free, много теории и практически-полезных знаний - 1 У меня для вас есть новость: мы с Андреем Гончаровым, моим хорошим другом и соратником решили сделать для вас доклады по lock-free, выступая вместе. Мне показалось, это должно сильно оживить атмосферу выступления. Андрей сейчас закапывается в эту тему так, что иногда его приходится даже останавливать: доклады будут очень интересными и полезными.

CLRium #6: Парный доклад про Lock-Free, много теории и практически-полезных знаний - 2 Юрий Власов, мой второй коллега нашёл библиотеку Microsoft.VisualStudio.Threading, которую с удовольствием использует в проектах. Он решил поведать вам о её богатых возможностях и применимости в различных задачах. Этот доклад отлично завершит тему lock-free, закрыв вопросы теории, оценки сложностей, анализа существующих алгоритмов и построения собственных вопросом хорошей реализации в виде промышленной библиотеки.

В честь Дня Программиста мы ввели промокод: CLRiumDevDay. Он действует всего-лишь два дня, когда можно забронировать билеты. Далее — вы имеете 5 дней на оплату билетов.
Первый день — скидка = 25%, второй = 15%

CLRium #6: Парный доклад про Lock-Free, много теории и практически-полезных знаний - 3Читать полностью »


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js