Example #1
0
    void ExecuteInstances()
    {
        while (!dead)
        {
            monitor_workers.WaitOne();
            GetInstance().ThreadStarted();

            // While work is available
            int batch = currentTask.Next();
            while (batch < currentTask.instances.Count)
            {
                // A single batch
                for (int i = batch; i < batch + batchSize && i < currentTask.instances.Count; i++)
                {
                    currentTask.instances[i].SuperStep();
                }
                batch = currentTask.Next();
            }

            GetInstance().ThreadFinished();
        }
    }