public void QueueJobSingle(Job job)
        {
            lock (queue_lock)
            {
                string token = NextJob.GetQueuedJobToken(job);

                // Only add the job if it is not already queued, OR if we are queuing a FORCE job, which has priority
                if (!job_queue_single.ContainsKey(token) || job.force_job)
                {
                    job_queue_single[token] = job;
                }
            }
        }
        public void QueueJobGroup(Job job)
        {
            lock (queue_lock)
            {
                string token = NextJob.GetQueuedJobToken(job);

                // Only add the job if it is not already queued
                if (!job_queue_group.ContainsKey(token))
                {
                    job_queue_group[token] = job;
                }
            }
        }
        public void QueueJobSingle(Job job)
        {
            string token = NextJob.GetQueuedJobToken(job);

            Utilities.LockPerfTimer l1_clk = Utilities.LockPerfChecker.Start();
            lock (queue_lock)
            {
                l1_clk.LockPerfTimerStop();

                // Only add the job if it is not already queued, OR if we are queuing a FORCE job, which has priority
                if (!job_queue_single.ContainsKey(token) || job.force_job)
                {
                    job_queue_single[token] = job;
                }
            }
        }
        public void QueueJobGroup(Job job)
        {
            string token = NextJob.GetQueuedJobToken(job);

            Utilities.LockPerfTimer l1_clk = Utilities.LockPerfChecker.Start();
            lock (queue_lock)
            {
                l1_clk.LockPerfTimerStop();

                // Only add the job if it is not already queued
                if (!job_queue_group.ContainsKey(token))
                {
                    job_queue_group[token] = job;
                }
            }
        }