Changeset 392 for trunk/sources/HeuristicLab.CEDMA.Server
- Timestamp:
- 07/22/08 21:16:39 (16 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/sources/HeuristicLab.CEDMA.Server/RunScheduler.cs
r390 r392 45 45 private object queueLock = new object(); 46 46 private Queue<Job> jobQueue; 47 private AutoResetEvent runningJobs = new AutoResetEvent(false); 47 48 48 49 public RunScheduler(Database database, JobManager jobManager) { … … 80 81 lock(queueLock) { 81 82 jobQueue.Enqueue(job); 83 runningJobs.Set(); 82 84 } 83 85 } … … 87 89 try { 88 90 while(true) { 89 int runningJobs;90 lock(queueLock) runningJobs = jobQueue.Count;91 if( runningJobs==0) Thread.Sleep(1000); // TASK: replace with waithandle91 Job job = null; 92 lock(queueLock) if(jobQueue.Count > 0) job = jobQueue.Dequeue(); 93 if(job == null) runningJobs.WaitOne(); 92 94 else { 93 Job job;94 lock(queueLock) {95 job = jobQueue.Dequeue();96 }97 95 job.WaitHandle.WaitOne(); 98 96 job.WaitHandle.Close(); 99 97 lock(remoteCommLock) { 100 jobManager.EndExecuteOperation(job.Operation); 101 database.UpdateAgent(job.AgentId, ProcessStatus.Finished); 98 try { 99 jobManager.EndExecuteOperation(job.Operation); 100 database.UpdateAgent(job.AgentId, ProcessStatus.Finished); 101 } catch(JobExecutionException ex) { 102 database.UpdateAgent(job.AgentId, ProcessStatus.Error); 103 } 102 104 } 103 105 }
Note: See TracChangeset
for help on using the changeset viewer.