Подтвердить что ты не робот

Многопоточность

Я изучаю Multi Threading на данный момент, на С#, но, как и во всем обучении, мне нравится изучать лучшие практики. В настоящий момент область кажется нечеткой. Я понимаю основы, и я могу создавать потоки.

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

Спасибо за ответы.

4b9b3361

Ответ 1

В дополнение к MSDN Best Practices, я добавлю:

  • Не создавайте свои собственные потоки. Предпочитаете использовать ThreadPool (или новую параллельную библиотеку задач Задачи). Управление собственной нитью редко, если вообще когда-либо, правильное дизайнерское решение.
  • Будьте осторожны с проблемами, связанными с пользовательским интерфейсом. Control.Invoke (Windows Forms) и Dispatcher.Invoke ( WPF) или используйте SynchronizationContext. Текущий с Post/Send
  • При необходимости используйте BackgroundWorker class.
  • Попробуйте сохранить синхронизацию через блокировки до минимума
  • Обязательно синхронизировать все, что требует синхронизации.
  • Вы можете использовать методы заблокированный класс, если это возможно, при блокировке

Как только вы перейдете на более продвинутый уровень, и пытаетесь оптимизировать, другие вещи, которые нужно искать:

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

Ответ 3

Так как я открываю это на другой вкладке...

http://www.yoda.arachsys.com/csharp/threads/

Я всего лишь пара глав, но он был написан Джоном Скитом.

Ответ 4

Есть ли вещи, о которых вы должны знать? Конечно.

Опасности:

Полезную и интересную статью можно найти здесь