2
0

Interlocked.cs 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. //
  2. // System.Threading.Interlocked.cs
  3. //
  4. // Author:
  5. // Patrik Torstensson ([email protected])
  6. // Dick Porter ([email protected])
  7. //
  8. // (C) Ximian, Inc. http://www.ximian.com
  9. //
  10. using System;
  11. using System.Runtime.CompilerServices;
  12. namespace System.Threading
  13. {
  14. public sealed class Interlocked
  15. {
  16. private Interlocked () {}
  17. [MethodImplAttribute(MethodImplOptions.InternalCall)]
  18. public extern static int CompareExchange(ref int location1, int value, int comparand);
  19. [MethodImplAttribute(MethodImplOptions.InternalCall)]
  20. public extern static object CompareExchange(ref object location1, object value, object comparand);
  21. [MethodImplAttribute(MethodImplOptions.InternalCall)]
  22. public extern static float CompareExchange(ref float location1, float value, float comparand);
  23. [MethodImplAttribute(MethodImplOptions.InternalCall)]
  24. public extern static int Decrement(ref int location);
  25. [MethodImplAttribute(MethodImplOptions.InternalCall)]
  26. public extern static long Decrement(ref long location);
  27. [MethodImplAttribute(MethodImplOptions.InternalCall)]
  28. public extern static int Increment(ref int location);
  29. [MethodImplAttribute(MethodImplOptions.InternalCall)]
  30. public extern static long Increment(ref long location);
  31. [MethodImplAttribute(MethodImplOptions.InternalCall)]
  32. public extern static int Exchange(ref int location1, int value);
  33. [MethodImplAttribute(MethodImplOptions.InternalCall)]
  34. public extern static object Exchange(ref object location1, object value);
  35. [MethodImplAttribute(MethodImplOptions.InternalCall)]
  36. public extern static float Exchange(ref float location1, float value);
  37. }
  38. }