Changeset 6381 for branches/HeuristicLab.Hive-3.4/sources/HeuristicLab.Clients.Hive/3.4/HiveJobs/OptimizerHiveJob.cs
- Timestamp:
- 06/08/11 00:04:16 (13 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/HeuristicLab.Hive-3.4/sources/HeuristicLab.Clients.Hive/3.4/HiveJobs/OptimizerHiveJob.cs
r6373 r6381 129 129 private void Optimizers_ItemsAdded(object sender, CollectionItemsChangedEventArgs<IndexedItem<IOptimizer>> e) { 130 130 if (syncJobsWithOptimizers && this.ItemJob.ComputeInParallel) { 131 foreach (var item in e.Items) { 132 if (GetChildByOptimizer(item.Value) == null && item.Value.Name != "Placeholder") { 133 this.childHiveJobs.Add(new OptimizerHiveJob(item.Value)); 134 } 135 } 131 childHiveJobsLock.EnterWriteLock(); 132 try { 133 foreach (var item in e.Items) { 134 if (GetChildByOptimizer(item.Value) == null && item.Value.Name != "Placeholder") { 135 this.childHiveJobs.Add(new OptimizerHiveJob(item.Value)); 136 } 137 } 138 } 139 finally { childHiveJobsLock.ExitWriteLock(); } 136 140 } 137 141 } 138 142 private void Optimizers_ItemsReplaced(object sender, CollectionItemsChangedEventArgs<IndexedItem<IOptimizer>> e) { 139 143 if (syncJobsWithOptimizers && this.ItemJob.ComputeInParallel) { 140 foreach (var item in e.OldItems) { 141 this.childHiveJobs.Remove(this.GetChildByOptimizer(item.Value)); 142 } 143 foreach (var item in e.Items) { 144 if (GetChildByOptimizer(item.Value) == null && item.Value.Name != "Placeholder") { 145 this.childHiveJobs.Add(new OptimizerHiveJob(item.Value)); 146 } 147 } 144 childHiveJobsLock.EnterWriteLock(); 145 try { 146 foreach (var item in e.OldItems) { 147 this.childHiveJobs.Remove(this.GetChildByOptimizer(item.Value)); 148 } 149 foreach (var item in e.Items) { 150 if (GetChildByOptimizer(item.Value) == null && item.Value.Name != "Placeholder") { 151 this.childHiveJobs.Add(new OptimizerHiveJob(item.Value)); 152 } 153 } 154 } 155 finally { childHiveJobsLock.ExitWriteLock(); } 148 156 } 149 157 } 150 158 private void Optimizers_ItemsRemoved(object sender, CollectionItemsChangedEventArgs<IndexedItem<IOptimizer>> e) { 151 159 if (syncJobsWithOptimizers && this.ItemJob.ComputeInParallel) { 152 foreach (var item in e.Items) { 153 this.childHiveJobs.Remove(this.GetChildByOptimizer(item.Value)); 154 } 160 childHiveJobsLock.EnterWriteLock(); 161 try { 162 foreach (var item in e.Items) { 163 this.childHiveJobs.Remove(this.GetChildByOptimizer(item.Value)); 164 } 165 } 166 finally { childHiveJobsLock.ExitWriteLock(); } 155 167 } 156 168 } 157 169 private void Optimizers_CollectionReset(object sender, CollectionItemsChangedEventArgs<IndexedItem<IOptimizer>> e) { 158 170 if (syncJobsWithOptimizers && this.ItemJob.ComputeInParallel) { 159 foreach (var item in e.Items) { 160 this.childHiveJobs.Remove(this.GetChildByOptimizer(item.Value)); 161 } 171 childHiveJobsLock.EnterWriteLock(); 172 try { 173 foreach (var item in e.Items) { 174 this.childHiveJobs.Remove(this.GetChildByOptimizer(item.Value)); 175 } 176 } 177 finally { childHiveJobsLock.ExitWriteLock(); } 162 178 } 163 179 } … … 182 198 183 199 OptimizerHiveJob child = (OptimizerHiveJob)this.ChildHiveJobs.Single(j => j.Job.Id == childJobId); 184 if (!optimizerJob.ComputeInParallel) { 185 child.syncJobsWithOptimizers = false; 186 child.ItemJob = optimizerJob; 187 child.syncJobsWithOptimizers = true; 188 } 200 childHiveJobsLock.EnterReadLock(); 201 try { 202 if (!optimizerJob.ComputeInParallel) { 203 child.syncJobsWithOptimizers = false; 204 child.ItemJob = optimizerJob; 205 child.syncJobsWithOptimizers = true; 206 } 207 } 208 finally { childHiveJobsLock.ExitReadLock(); } 189 209 syncJobsWithOptimizers = true; 190 210 } … … 243 263 } 244 264 } 245 foreach (OptimizerHiveJob child in childHiveJobs) { 246 child.SetIndexInParentOptimizerList(this); 247 } 265 childHiveJobsLock.EnterReadLock(); 266 try { 267 foreach (OptimizerHiveJob child in childHiveJobs) { 268 child.SetIndexInParentOptimizerList(this); 269 } 270 } 271 finally { childHiveJobsLock.ExitReadLock(); } 248 272 } 249 273 … … 302 326 } 303 327 304 JobData jobData = new JobData() { 305 JobId = job.Id, 306 Data = jobByteArray 307 }; 308 328 JobData jobData = new JobData() { JobId = job.Id, Data = jobByteArray }; 309 329 PluginUtil.CollectDeclaringPlugins(plugins, usedTypes); 310 311 330 return jobData; 312 331 } 313 332 314 333 public OptimizerHiveJob GetChildByOptimizerJob(OptimizerJob optimizerJob) { 315 foreach (OptimizerHiveJob child in ChildHiveJobs) { 316 if (child.ItemJob == optimizerJob) 317 return child; 318 } 319 return null; 334 childHiveJobsLock.EnterReadLock(); 335 try { 336 foreach (OptimizerHiveJob child in childHiveJobs) { 337 if (child.ItemJob == optimizerJob) 338 return child; 339 } 340 return null; 341 } 342 finally { childHiveJobsLock.ExitReadLock(); } 320 343 } 321 344 322 345 public HiveJob<OptimizerJob> GetChildByOptimizer(IOptimizer optimizer) { 323 foreach (OptimizerHiveJob child in ChildHiveJobs) { 324 if (child.ItemJob.Item == optimizer) 325 return child; 326 } 327 return null; 346 childHiveJobsLock.EnterReadLock(); 347 try { 348 foreach (OptimizerHiveJob child in childHiveJobs) { 349 if (child.ItemJob.Item == optimizer) 350 return child; 351 } 352 return null; 353 } 354 finally { childHiveJobsLock.ExitReadLock(); } 328 355 } 329 356
Note: See TracChangeset
for help on using the changeset viewer.