gpt4 book ai didi

c# - MemoryCache.AddOrGetExisting 有什么用?

转载 作者:IT王子 更新时间:2023-10-29 04:24:24 24 4
gpt4 key购买 nike

MemoryCache.AddOrGetExisting 的行为被描述为:

Adds a cache entry into the cache using the specified key and a value and an absolute expiration value.

它返回:

If a cache entry with the same key exists, the existing cache entry; otherwise, null.

具有这些语义的方法的目的是什么?这是什么例子?

最佳答案

通常情况下,如果匹配条目尚不存在,您只想创建一个缓存条目(也就是说,您不想覆盖现有值)。

AddOrGetExisting允许您以原子方式执行此操作。没有AddOrGetExisting以原子的、线程安全的方式执行 get-test-set 是不可能的。例如:

 Thread 1                         Thread 2
-------- --------

// check whether there's an existing entry for "foo"
// the call returns null because there's no match
Get("foo")

// check whether there's an existing entry for "foo"
// the call returns null because there's no match
Get("foo")

// set value for key "foo"
// assumes, rightly, that there's no existing entry
Set("foo", "first thread rulez")

// set value for key "foo"
// assumes, wrongly, that there's no existing entry
// overwrites the value just set by thread 1
Set("foo", "second thread rulez")

(另请参阅 Interlocked.CompareExchange 方法,它在变量级别启用更复杂的等效项,以及 test-and-setcompare-and-swap 上的维基百科条目。)

关于c# - MemoryCache.AddOrGetExisting 有什么用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14698228/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com