Stack Overflow на русском Asked by GwenBleidd on July 30, 2020
В чем различие между:
Interlocked
- если нужно атомарно изменить значение одной простой переменной.
lock
- если нужно изменять сложные (составные) типы или множество простых.
Mutex
- используется для межпроцессной коммуникации (в отличие от межпоточной).
Semaphore(Slim)
- если нужно ограничить количество потоков, работающих одновременно с ресурсом.
ReaderWriterLock(Slim)
- реализует стандартный паттерн "Один писатель - много читателей". Судя по многочисленны отзывам, страдает плохой производительностью, даже версия Slim. Устарел. В некоторых случаях его можно заменить на Task + pipeline.
Потокобезопасные коллекции из System.Collections.Concurrent
- для безопасной работы с коллекциями объектов из нескольких потоков.
Кардинальное решение проблемы - переход на иммутабельные (неизменяемые) типы. В частности, коллекции System.Collections.Immutable
. Нет разделяемых ресурсов - не нужна синхронизация.
Correct answer by Alexander Petrov on July 30, 2020
Get help from others!
Recent Questions
Recent Answers
© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP