Volatile消除了可见性和订购问题。虽然atomic toolkit提供了操作的原子性。 易失性使用happens-before关系,Atomic使用比较和交换。
为什么需要像原子工具包那样引入新的抽象层,而不是增强volatile关键字本身?是否有任何特定情况可以通过原子工具包解决?
答案 0 :(得分:2)
实际上,如果您仔细查看Atomic*
implemetations,那么您会发现所有这些字段都包含CAS
字段值。
IMHO atomics已经是volatile机制的扩展,它提供了进行原子CAS
操作的便捷方法。
隐藏var info = new ProcessStartInfo(@"C:\Program Files\Git\git-cmd.exe");
info.RedirectStandardInput = true;
info.UseShellExecute = false;
var gitProcess = new Process { StartInfo = info };
gitProcess.Start();
using (StreamWriter sw = gitProcess.StandardInput)
{
// commands here
}
gitProcess.WaitForExit();
实施也有好处。例如,热点jvm大量使用内在函数来实现挤压性能。