Персональные инструменты
 

Многопоточные приложения (.Net, Windows) (семинар 2011-11-08) — различия между версиями

Материал из CustisWiki

Перейти к: навигация, поиск
(Материалы)
м
 
(не показана одна промежуточная версия этого же участника)
Строка 1: Строка 1:
;Ведущий: Дутиков Михаил
+
;Ведущий: [http://ru.linkedin.com/pub/mikhail-dutikov/54/31a/50b Дутиков Михаил]
 
;Дата:ноябрь 2011
 
;Дата:ноябрь 2011
  
Строка 39: Строка 39:
  
 
<blockquote>
 
<blockquote>
Неточности, допущенные автором в этом семинаре, будут исправлены в следующем.
+
Неточности, допущенные автором в этом семинаре, будут исправлены в следующем (см. [[Многопоточные приложения (.Net, Windows) (часть вторая) (семинар 2012-06-19)]]).
  
 
В частности, будет уточнение насчет инкремента и машинного кода, производимого JIT-компилятором (и сопоставления программы одному ядру процессора). Будет уточнение насчет старого ReaderWriterLock — к дедлокам все же он не приводит.
 
В частности, будет уточнение насчет инкремента и машинного кода, производимого JIT-компилятором (и сопоставления программы одному ядру процессора). Будет уточнение насчет старого ReaderWriterLock — к дедлокам все же он не приводит.

Текущая версия на 22:03, 12 июля 2012

Ведущий
Дутиков Михаил
Дата
ноябрь 2011

Аннотация

Разработка многопоточных приложений на .Net под Windows: основы

Многопоточные приложения и машины с многоядерными процессорами повсюду. Уметь писать многопоточные приложения сегодня крайне важно, будь вы server-side программист или разработчик desktop-приложений.

На этом (вводном в предмет) семинаре мы поговорим о том, как Windows управляет ресурсами процессоров, чтобы делать ту кучу всего, что она делает. Поговорим о системе приоритетов и о том, как она работает. Поглядим на кванты, потоки, переключения контекста.

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

Разберем некоторые важные сценарии использования потоков. В том числе и вопрос -- создавать потоки явно или использовать пул? Немного покопаемся в пуле и поглядим на задачи, которые он облегчает. Посмотрим, чем он хорош и плох.

Отдельно (краем глаза) поглядим на то, какие архитектурные паттерны существуют в области многопоточного программирования. В основном на те, что касаются создания потокобезопасного кода. Остановимся на уровне классов.

Краткое содержание (по темам):

  • Потоки в Windows, кванты, приоритеты, переключения контекста, планировщик.
  • Потоки в .Net. Явное создание и взаимодействие.
  • Архитектура многопоточных приложений (уровень классов). Управление состоянием. Изоляция, неизменяемость, синхронизация.
  • Синхронизация: объекты ядра, пользовательского режима, гибриды. Сценарии использования.
  • Потокобезопасный код.
  • Пул потоков.
  • Таймеры.
  • Исключения.


Исходники -- Файл:MultithreadingSeminar1.zip.

Слайды -- Файл:Multithreading.Seminar1.pptx.

Материалы

Неточности, допущенные автором в этом семинаре, будут исправлены в следующем (см. Многопоточные приложения (.Net, Windows) (часть вторая) (семинар 2012-06-19)).

В частности, будет уточнение насчет инкремента и машинного кода, производимого JIT-компилятором (и сопоставления программы одному ядру процессора). Будет уточнение насчет старого ReaderWriterLock — к дедлокам все же он не приводит.

Еще будет уточнение насчет брошенных мьютекстов: система следит за ними менее пристально, чем утверждает автор в этом семинаре. Будут и другие, менее значительные уточнения.


Внимание! Эта статья была создана путем автоматического реплицирования из внутренней базы знаний компании Заказные Информ Системы. Любые правки этой статьи могут быть перезаписаны при следующем сеансе репликации. Если у вас есть серьезное замечание по тексту статьи, запишите его в раздел «discussion».