Do not allow new jobs to start when all cores are used. Also Fix #6130 (Conversion details show wrong conversion in title)

This commit is contained in:
Kovid Goyal 2010-08-15 03:17:27 -06:00
parent 7c7f5ec119
commit e9c1aa873c
2 changed files with 11 additions and 3 deletions

View File

@ -175,6 +175,7 @@ class JobManager(QAbstractTableModel):
self.jobs.append(job)
self.jobs.sort()
self.job_added.emit(len(self.unfinished_jobs()))
self.layoutChanged.emit()
def done_jobs(self):
return [j for j in self.jobs if j.is_finished]

View File

@ -103,7 +103,7 @@ class Server(Thread):
authkey=self.auth_key, backlog=4)
self.add_jobs_queue, self.changed_jobs_queue = Queue(), Queue()
self.kill_queue = Queue()
self.waiting_jobs, self.processing_jobs = [], deque()
self.waiting_jobs = []
self.pool, self.workers = deque(), deque()
self.launched_worker_count = 0
self._worker_launch_lock = RLock()
@ -227,8 +227,15 @@ class Server(Thread):
def suitable_waiting_job(self):
available_workers = len(self.pool)
if available_workers == 0:
return None
for worker in self.workers:
job = worker.job
if job.core_usage == -1:
available_workers = 0
elif job.core_usage > 1:
available_workers -= job.core_usage - 1
if available_workers < 1:
return None
for i, job in enumerate(self.waiting_jobs):
if job.core_usage == -1:
if available_workers >= self.pool_size: