public class InterlockTest
{
public int test;
- public int ltest;
+ public long ltest;
public static int Main() {
int a,b;
/* long */
it.ltest = 2;
- int lc = Interlocked.Add (ref it.ltest, 1);
+ long lc = Interlocked.Add (ref it.ltest, 1);
if (lc != 3)
return 5;
if (lb != 2)
return 8;
+ if (Interlocked.Read (ref la) != 2)
+ return 9;
+
+ la = 1;
+ lc = Interlocked.Exchange (ref la, 2);
+ if (lc != 1)
+ return 10;
+
+ if (la != 2)
+ return 11;
+
/* Generics */
InterlockTest o1 = new InterlockTest ();
InterlockTest o2 = new InterlockTest ();
InterlockTest o3 = Interlocked.CompareExchange (ref o, o2, o2);
if (o3 != o1)
- return 9;
+ return 12;
if (o != o1)
- return 10;
+ return 13;
InterlockTest o4 = Interlocked.CompareExchange (ref o, o2, o1);
if (o4 != o1)
- return 11;
+ return 14;
if (o != o2)
- return 12;
+ return 15;
Console.WriteLine ("done!");