1
0
Fork 0
mirror of https://github.com/beefytech/Beef.git synced 2025-06-15 06:44:10 +02:00
Beef/IDE/Tests/Test1/src/Multithread02.bf
2019-08-23 11:56:54 -07:00

71 lines
1.1 KiB
Beef

#pragma warning disable 168
using System.Threading;
using System;
namespace IDETest
{
class Multithread02
{
public static WaitEvent sEvent0 = new WaitEvent() ~ delete _;
public static WaitEvent sEvent1 = new WaitEvent() ~ delete _;
public static int sVal0;
public static int sVal1;
class ClassA
{
public int mA;
[AlwaysInclude]
public int GetValWithWait()
{
Thread.Sleep(1000);
return mA;
}
}
public static void Thread1()
{
Thread.CurrentThread.SetName("Test_Thread1");
ClassA ca = scope .();
ca.mA = 100;
Thread.Sleep(100);
//Thread1_0
sEvent0.Set();
Interlocked.Increment(ref sVal1);
sEvent1.WaitFor();
//Thread1_1
Interlocked.Increment(ref sVal1);
}
public static void DoTest()
{
ClassA ca = scope .();
ca.mA = 9;
Thread thread1 = scope .(new => Thread1);
thread1.Start(false);
Interlocked.Increment(ref sVal0);
Thread.Sleep(500);
Interlocked.Increment(ref sVal0);
sEvent0.WaitFor();
sEvent1.Set();
thread1.Join();
}
public static void Test()
{
//Test_Start
bool doTest = false;
if (doTest)
{
DoTest();
}
}
}
}