Что подразумевается под «опыт работы с многопоточностью» в C#?
Частенько в описаниях вакансий встречаю требование "опыт работы с многопоточностью" или вроде того. Что чаще всего подразумевается под этим опытом? Понимание механизмов блокировок? Или создание потоков/тасков и работа с ними? А может быть что-то еще?
Как вариант помимо перечисленного понимание при написании кода, что в каком потоке будет выполняться. Понимание, где есть доступ к общим ресурсам, а где в каждом потоке своя копия (например, параметры метода, которые копируются, если это ссылочный тип в качестве параметров, то... в общем, нужно это всё понимать).
Ну и то и значит, это значит, что ты писал многопоточный код и у тебя это получилось. Понимание, кстати, что нужно лочить а что нет тоже не маловажно, часто можно упустить детали.
Появилась даже книга: Конкурентность и параллелизм на платформе .NET. Паттерны эффективного проектирования.
Её можно купить в электронном виде на сайте издателя.
- Использование потоков.
- Использование тасков и особенности работы с ними.
- Синхронизация доступа к данным.
- для UI приложений, особенности доступа к контролам из потоков.