У меня есть базовое понимание многопоточности cs-major, но мне никогда не приходилось делать что-либо, кроме простых таймеров в приложении. Кто-нибудь знает хороший ресурс, который расскажет мне, как работать с многопоточными приложениями, объяснит основы и, возможно, изложит некоторые из более сложных вещей?





Это отличный бесплатный ресурс Джозефа Альбахари. Многопоточность в C#
Существует 4 основных способа синхронизации потоков в .Net:
Как правило, вы хотите начать с начала этого списка и двигаться вниз. Это означает, что сначала нужно посмотреть, подходит ли элемент управления фонового работника для ситуации. Тем не менее, это в значительной степени предполагает формы Windows и то, что вы создаете только один новый поток.
Так что теперь попробуйте обработчики ожидания. Дескрипторы удобны для координации нескольких потоков вместе. Вы можете отбросить их всех и дождаться, пока они все закончатся, или, если вы хотите, чтобы определенное число оставалось активным, вы продолжаете ждать только одного и порождать следующее, когда оно закончится. Или, может быть, вы знаете, что один поток завершится намного раньше, поэтому вы можете дождаться его завершения, немного поработать и дождаться завершения остальных.
Дескрипторы ожидания могут показаться чрезмерными, если, скажем, вы создаете только один дополнительный поток и не хотите блокировать, пока он не завершится. Затем вы можете использовать обратный вызов, чтобы назначенная вами функция вызывалась, как только поток завершится.
Наконец, если и только если по какой-то причине ничего из вышеперечисленного не сработает, вы можете вернуться к опросу.
Я могу придумать 5 различных способов создать новую ветку в .Net, также примерно по порядку:
Две замечательные статьи:
What Every Dev Must Know About Multithreaded Apps
Understand the Impact of Low-Lock Techniques in Multithreaded Apps
Хотя эта статья - не совсем то, что вам нужно, но, надеюсь, она будет полезной в целом (т.е. она связана с является, и ее можно очень хорошо прочитать):
The Free Lunch Is Over: A Fundamental Turn Toward Concurrency in Software
Хороший веб-ресурс для изучения многопоточности в .NET:
Один из лучших ресурсов, который я знаю по этой теме, - это книга "Потоковая обработка в C#": http://www.albahari.com/threading/
У меня есть отличный обзор всего, что необходимо понять разработчику .net, чтобы программировать многопоточные приложения.