public void AtomicDataResource_Atomic_Self_Dispose_Repeating() { const int MAX = 5000; var resource = new AtomicFloatResource(MAX, Allocator.Persistent); var holder = new NativeArray <AtomicFloat>(MAX, Allocator.Persistent); AtomicFloat special_afloat = new AtomicFloat(); for (var k = 0; k < 8; ++k) { var job0 = new Job0() { resource = resource, holder = holder, }; job0.Schedule(MAX, 32).Complete(); Assert.AreEqual(MAX, resource.getCountInUse()); if (k == 0) { special_afloat = holder[MAX / 3]; } for (var i = 0; i < MAX; ++i) { var afloat = holder[i]; Assert.IsTrue(afloat.Exists()); } var job3 = new Job3() { holder = holder, }; job3.Schedule(MAX, 32).Complete(); Assert.AreEqual(0, resource.getCountInUse()); for (var i = 0; i < MAX; ++i) { var afloat = holder[i]; Assert.IsFalse(afloat.Exists()); } } { var job0 = new Job0() { resource = resource, holder = holder, }; job0.Schedule(MAX, 32).Complete(); Assert.AreEqual(MAX, resource.getCountInUse()); // all slots are in use. Assert.IsFalse(special_afloat.Exists()); // too old. } holder.Dispose(); resource.Dispose(); }
public void NativeLimitedCounter_IncrementDecrement_MoreStrict() { const int MAX = 32 * 32; var counter = new NativeLimitedCounter(Allocator.Persistent); for (var i = 0; i < MAX / 2; ++i) { counter.TryIncrement(MAX); } var job = new Job3(); job.counter = counter; job.Schedule(MAX, 32).Complete(); Assert.AreEqual(MAX / 2, counter.Count); counter.Dispose(); }
public void AtomicDataResource_Atomic_Self_Dispose() { const int MAX = 5000; var resource = new AtomicFloatResource(MAX, Allocator.Persistent); var holder = new NativeArray <AtomicFloat>(MAX, Allocator.Persistent); var job0 = new Job0() { resource = resource, holder = holder, }; job0.Schedule(MAX, 32).Complete(); Assert.AreEqual(MAX, resource.getCountInUse()); for (var i = 0; i < MAX; ++i) { var afloat = holder[i]; Assert.IsTrue(afloat.Exists()); } var job3 = new Job3() { holder = holder, }; job3.Schedule(MAX, 32).Complete(); Assert.AreEqual(0, resource.getCountInUse()); for (var i = 0; i < MAX; ++i) { var afloat = holder[i]; Assert.IsFalse(afloat.Exists()); } holder.Dispose(); resource.Dispose(); }
public async Task <ActionResult> Add(int?p1Count, int?p2Count, int?p3Count, int?p4Count, int?p5Count) { var appID = ConfigurationManager.AppSettings["ApplicationID"]; if (string.IsNullOrWhiteSpace(appID)) { appID = "Shift.Demo.MVC"; } var message = ""; if (p1Count > 0) { for (var i = 0; i < p1Count; i++) { var job1 = new Job1(); var progress = new SynchronousProgress <ProgressInfo>(); //placeholder to be replaced by Server progress object var cancelToken = (new CancellationTokenSource()).Token; //placeholder to be replaced by Server token var pauseToken = (new PauseTokenSource()).Token; await jobClient.AddAsync(appID, () => job1.Start("Hello World!", progress, cancelToken, pauseToken)); } message += p1Count + " - Job1 added to queue. <br/>"; } if (p2Count > 0) { for (var i = 0; i < p2Count; i++) { var job2 = new Job2(); var progress = new SynchronousProgress <ProgressInfo>(); var cancelToken = (new CancellationTokenSource()).Token; //placeholder to be replaced by Server token var pauseToken = (new PauseTokenSource()).Token; await jobClient.AddAsync(appID, () => job2.Start(progress, 1, cancelToken, pauseToken)); } message += p2Count + " - Job2 added to queue. <br/>"; } if (p3Count > 0) { var simpleList = new List <int>(); for (var i = 1; i <= 100; i++) { simpleList.Add(i); } for (var i = 0; i < p3Count; i++) { var job3 = new Job3(); var progress = new SynchronousProgress <ProgressInfo>(); await jobClient.AddAsync(appID, () => job3.Start(progress, simpleList)); } message += p3Count + " - Job3 added to queue. <br/>"; } if (p4Count > 0) { var complexList = new List <TestData>(); for (var i = 1; i <= 100; i++) { var newData = new TestData(); newData.MyNumber = i; newData.MyString = "mystring " + i; complexList.Add(newData); } for (var i = 0; i < p4Count; i++) { var job4 = new Job4(); var progress = new SynchronousProgress <ProgressInfo>(); var cancelToken = (new CancellationTokenSource()).Token; //placeholder to be replaced by Server token var pauseToken = (new PauseTokenSource()).Token; await jobClient.AddAsync(appID, () => job4.Start(progress, complexList, cancelToken, pauseToken)); } message += p4Count + " - Job4 added to queue. <br/>"; } if (p5Count > 0) { var simpleList = new List <int>(); for (var i = 1; i <= 100; i++) { simpleList.Add(i); } for (var i = 0; i < p5Count; i++) { var job5 = new Job5(); var cancelToken = (new CancellationTokenSource()).Token; //placeholder to be replaced by Server token var pauseToken = (new PauseTokenSource()).Token; var progress = new SynchronousProgress <ProgressInfo>(); await jobClient.AddAsync(appID, () => job5.StartAsync(progress, simpleList, cancelToken, pauseToken)); } message += p5Count + " - Job5 added to queue. <br/>"; } ViewBag.Message = message; return(View("Index")); }