- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我一直在阅读 MCS 锁,我觉得它很酷。现在我知道它是如何实现的,下一个问题是何时使用它。下面是我的想法。请随时将项目添加到列表中
1) 理想情况下应该在我们想要同步的线程超过 2 个时使用
2) MCS 锁减少了必须失效的缓存行的数量。在最坏的情况下,2 个 CPU 的缓存行无效。
还有什么我想念的吗?
MCS 也可以用来实现互斥锁而不是自旋锁吗?
最佳答案
当存在高锁争用时,代码将受益于使用 MCS 锁,即许多线程同时尝试获取锁。当使用简单的自旋锁时,所有线程都轮询单个共享变量,而 MCS 形成一个等待线程队列,这样每个线程都在 上轮询。其前身在队列中。由于等待是“本地”执行的,因此缓存一致性要轻得多。
使用 MCS 来实现互斥锁并没有什么意义。
在互斥锁中,等待线程通常是 排队 由操作系统并取消计划,因此没有任何轮询。例如查看 pthread's mutex implementation .
关于operating-system - 何时使用 MCS 锁,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24464954/
我想为给定的整数输入数组找到一个非空的连续子数组,它可以有重复的值。我尝试了分而治之的方法来查找一个数组的最大连续子数组,结果返回了与预期不同的结果。请在下面找到代码。 private static
我想在我的常规 .NET 3.5 应用程序中使用 Mono 的编译器作为服务。 我已经下载了最新版本 (2.6.7),在 Visual Studio 中创建了一个简单的控制台应用程序并引用了 Mono
我一直在阅读 MCS 锁,我觉得它很酷。现在我知道它是如何实现的,下一个问题是何时使用它。下面是我的想法。请随时将项目添加到列表中 1) 理想情况下应该在我们想要同步的线程超过 2 个时使用 2) M
我正在尝试重新创建在选择单击 Wi-Fi 状态栏项目时为当前 Wi-Fi 网络显示的信息。显示的参数之一是 MCS 索引,但我找不到使用 CWInterface 类查询此值的任何方法,这是我获取大部分
我发现 Java 中的 MCS 锁有一些非常奇怪的缓存行为。基本上,它最多可以工作四个线程(我机器上的核心数量),但会卡住更多线程。当我调试时,我发现程序卡在线路上 while (qnode.lock
我知道 .NET 和 Mono 是二进制兼容的,但给定一组源代码,csc 和 mcs 会生成完全相同的 100% 相同的二进制 CLI 可执行文件吗?人们能够判断可执行文件是用 csc 还是 mcs
需要您的帮助来解决问题。我正在 MCS 中编写一个自定义 API,其方法类型为“GET”,将参数与 URI 一起传递。 service.get('/mobile/custom/****/deviceV
我正在使用最新的 Mono 3.12.1。除了字符串插值外,所有 C#6 功能都对我有用。我正在使用 MCS 编译器。 这是我的代码: const string someString = "Some
我有一些使用 Tuple 的 C# 代码: public class Test { static void Main() { Tuple t = Tuple.Create(0,
我正在尝试创建一个使用 PKI 进行身份验证的 java 应用程序。我需要能够从 Microsoft 证书存储 (MCS) 检索证书并将其传递到 Oracle 数据库 (11.2)。 我正在使用 jd
我正在尝试按照这篇文章中的描述在 CentOS 7 上安装 MonoDevelop 4:Install Mono and Monodevelop on CentOS 5.x/6.x ,但是当我试图执行
我是一名 Unix 专家,需要尝试编译一些 C# 代码才能工作。我已经下载了适用于 Mac 的 Mono 和 mcs 命令行工具。该库附加了一个 csproj 文件,其中包含带有我需要编译的所有文件的
我们正在尝试在 OS X 的命令行上运行一个简单的 Mono 脚本。大多数脚本对我们来说工作正常,但是一旦我们尝试使用 System.Numerics,我们就会收到“错误 CS0234:类型或命名空间
我正在尝试使用 mcs 从命令行构建单个 cs 文件。我在 C# 代码中使用外部库: 使用 SomeLib 但是,我无法找到如何为 mcs 指定所需的库。如何解决此错误? 最佳答案 解决方案是使用 g
我是 linux 和 mono 的新手。我使用 将单声道安装到新的 Raspberry Pi 机器上 sudo apt-get install mono-complete. 我还使用 apt-get
我是一名优秀的程序员,十分优秀!