c# - 自旋锁,它们有多大用处?

标签 c# c++ multithreading locking spinlock

您发现自己在代码中实际使用自旋锁的频率如何?遇到使用繁忙循环实际上优于使用锁的情况有多常见?
就个人而言,当我编写某种需要线程安全的代码时,我倾向于使用不同的同步原语对其进行基准测试,而且就目前而言,使用锁似乎比使用自旋锁提供更好的性能。不管我实际持有锁的时间有多短,我在使用自旋锁时收到的争用量远远大于我从使用锁中获得的量(当然,我在多处理器机器上运行我的测试)。

我意识到它更有可能在“低级”代码中遇到自旋锁,但我很想知道您是否发现它在更高级别的编程中是否有用?

最佳答案

这取决于你在做什么。在一般应用程序代码中,您需要避免自旋锁。

在低级别的东西中,您只会持有几条指令的锁,并且延迟很重要,自旋锁垫是比锁更好的解决方案。但这种情况很少见,尤其是在通常使用 C# 的应用程序中。

关于c# - 自旋锁,它们有多大用处?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1456225/

相关文章:

c# - 为什么一个基本的单线程 C# 控制台应用程序需要 3 个线程?

C# 解析 JSON 字符串

c++ - 缩小窗口时 EMF 质量会降低,但在窗口尺寸较高时会很好

java - 单击按钮停止线程

c++ - std::this_thread::get_id() 在 VS2013 中可靠吗?

linux - linux load 到底是什么意思?

c# - 在 .net 核心 API 应用程序中,wcf 客户端代理应该是 Singleton 还是 Transient

C# 获取/设置 BIOS 设置?

c++ - Qt如何将字符串翻译成函数?

c++ - 在 C++ 中一次读取一个文件