Example #1
0
        public void Run()
        {
            while (true)
            {
                try
                {
                    waitForWork.Wait();
                    while (jobIds.TryDequeue(out var jobHandle))
                    {
                        while (!JobWorkersManager.CanExecuteGroup(jobHandle.group))
                        {
                            Thread.Sleep(0);
                        }

                        if (jobHandle.executor.ExecuteJob(jobHandle))
                        {
                            JobWorkersManager.SignalComplete(jobHandle);
                        }
                    }

                    while (JobWorkersManager.TryStealWork())
                    {
                    }

                    waitForWork.Reset();
                }
                catch (Exception ex)
                {
                    Console.WriteLine(ex);
                }
            }
        }
        public void ConcurrentQueueWorkers()
        {
            var group = JobWorkersManager.StartJobGroup();

            for (int i = 0; i < numJobs; i++)
            {
                BenchJob job = new BenchJob();
                job.f1 = i;
                job.f2 = i + 1;
                JobWorkersManager.QueueJob(job, group);
            }

            JobWorkersManager.CompleteAll();
        }
 public void Setup()
 {
     ChannelJobs.Setup();
     JobWorkersManager.Setup();
 }