|
|
(не показаны 2 промежуточные версии 2 участников) |
Строка 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 — к дедлокам все же он не приводит. |
| | | |
− | Еще будет уточнение насчет брошенных мьютекстов: система следит за ними менее пристально, чем утверждает автор в первой части семинара. Будут и другие, менее значительные уточнения. | + | Еще будет уточнение насчет брошенных мьютекстов: система следит за ними менее пристально, чем утверждает автор в этом семинаре. Будут и другие, менее значительные уточнения. |
| </blockquote> | | </blockquote> |
| | | |
Текущая версия на 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 — к дедлокам все же он не приводит.
Еще будет уточнение насчет брошенных мьютекстов: система следит за ними менее пристально, чем утверждает автор в этом семинаре. Будут и другие, менее значительные уточнения.
Репликация: База Знаний «Заказных Информ Систем» → «Многопоточные приложения (.Net, Windows) (семинар 2011-11-08)»
Любые правки этой статьи будут перезаписаны при следующем сеансе репликации. Если у вас есть серьезное замечание по тексту статьи, запишите его в раздел «discussion».