rendered paste bodypublic class Money
{
private long m_val;
public Money(long val)
{
m_val = val;
}
public long Value
{
get
{
return m_val;
}
}
public void AddToMoney(long val)
{
Interlocked.Add(ref m_val, val);
}
public bool CheckAndDeduct(long removeAmt)
{
long exch;
long cmp, newcmp = Interlocked.Read(ref m_val);
do
{
if (Interlocked.Read(ref m_val) < removeAmt)
{
return false;
}
cmp = newcmp; exch = m_val - removeAmt;
}
while ((newcmp = Interlocked.CompareExchange(ref m_val, exch, cmp)) != cmp);
return true;
}
}