Чек-лист для .NET программиста: Многопоточность и Асинхронность

Многопоточность является мощным инструментом в разработке программного обеспечения, применение которого несет как неоспоримые преимущества, так и определенные сложности. C одной стороны разработчик получает возможность более эффективно использовать ресурсы операционной системы, что ведет к улучшению быстродействия приложения, но с другой стороны возрастает сложность отладки, появляется необходимость заботиться о синхронизации совместно используемых ресурсов памяти, увеличивается сложность тестирования, появляется риск возникновения смертельных блокировок. Также при недостаточно умелой реализации многопоточности снова возникает шанс повлиять на быстродействие приложения, но только в худшую сторону.

Для реализации многопоточности, параллелизма и асинхронности в .NET используется библиотека Task Parallel Library, ключевыми компонентами которой являются классы Task и Parallel. Синхронизация потоков достигается при помощи таких основных классов как Monitor, Interlocked, AutoResetEvent, а для межпроцессорной синхронизации используются классы Mutex, EventWaitHandle и другие.

Вопросы

  1. Чем отличается процесс от потока?
  2. Какая разница между многопоточным, параллельным и асинхронным программированием?
  3. Какое предназначение у пула потоков?
  4. Чем отличается активный поток от фонового?
  5. Как запустить операцию в новом потоке/в потоке из пула .NET?
  6. Когда нужно думать о синхронизации нескольких потоков?
  7. Для чего необходим класс Interlocked?
  8. В чем отличие инструментов синхронизации lock и Monitor?
  9. Для чего применяется ключевое слово volatile?
  10. При помощи какой конструкции синхронизации можно запретить запуск более одного экземпляра приложения одновременно?

Книги

Тема покрыта в книгах по C# и .NET. Список здесь Чек-лист для .NET программиста: С# и .NET

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

Заполните поля или щелкните по значку, чтобы оставить свой комментарий:

Логотип WordPress.com

Для комментария используется ваша учётная запись WordPress.com. Выход /  Изменить )

Google photo

Для комментария используется ваша учётная запись Google. Выход /  Изменить )

Фотография Twitter

Для комментария используется ваша учётная запись Twitter. Выход /  Изменить )

Фотография Facebook

Для комментария используется ваша учётная запись Facebook. Выход /  Изменить )

Connecting to %s