gpt4 book ai didi

c# - 信号量会阻止指令重新排序吗?

转载 作者:太空狗 更新时间:2023-10-29 23:43:43 25 4
gpt4 key购买 nike

我一直在寻找 C# 中 lock 语句的可等待等效项。有些人建议按以下方式使用二进制 SemaphoreSlim:

await semaphore.WaitAsync().ConfigureAwait(false);
try
{
//inner instructions
}
finally
{
semaphore.Release();
}

我知道它有一些问题(例如它不可重入),但我最担心的是指令重新排序。

在普通的旧锁语句中,我们可以保证来自锁的内部指令不会被移到锁语句之外(之前或之后)。这个信号量解决方案是否同样适用?据我所知,documentation没有提到这个问题。

最佳答案

SemaphoreSlim,以及几乎所有其他同步结构,都是使用 Monitor(或构建在 Monitor< 之上的其他类型)构建的) 在内部,这正是 lock 的实现方式,为您提供相同的保证。

关于c# - 信号量会阻止指令重新排序吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40979715/

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