Interlocked.CompareExchange

class SourceManager
{
private SourceManager() { }

private static SourceManager sourceManager;
public static SourceManager Instance
{
get
{
if (sourceManager == null)
{
/*

lock 实现方式
功能与以下 Interlocked.CompareExchange 相同

lock (this)
{
if (sourceManager == null)
{
sourceManager = new SourceManager();
}
}

*/
Interlocked.CompareExchange<SourceManager>(ref sourceManager, new SourceManager(), null);
}
return sourceManager;
}
}
}

原文地址:https://www.cnblogs.com/wolf12/p/4072483.html