Да, класс MemoryCache является поточно-ориентированным :
System.Runtime.Caching.MemoryCache является поточно-ориентированным.Несколько параллельных потоков могут читать и записывать экземпляр MemoryCache.Внутренняя безопасность потока автоматически обрабатывается, чтобы гарантировать, что кэш обновляется согласованным образом.
Это может означать, что данные, хранящиеся в кеше, сами по себе могут не быть потокобезопасными.Например, если список помещен в кэш, и два отдельных потока получают ссылку на кэшированный список, два потока в конечном итоге наступают друг на друга, если они оба пытаются обновить список одновременно.
Это означает, что методы Get и Set являются поточно-ориентированными, но если структура данных, которую вы можете хранить в этом кеше, не поточнобезопасна, у вас могут возникнуть проблемы.Представьте, например, что вы сохранили словарь внутри этого кэша.Затем, пока thread1 использует Get
для извлечения словаря и начинает чтение из него, thread2 использует Get
для извлечения этого же словаря и пытается записать в него.Хотя операция Get будет поточно-ориентированной, дальнейшие действия могут быть довольно неприятными.