threading: improve comments

Signed-off-by: Nicolas Sebrecht <nicolas.s-dev@laposte.net>
This commit is contained in:
Nicolas Sebrecht 2016-06-04 02:23:09 +02:00
parent d848141b39
commit 922bed05a7
3 changed files with 9 additions and 7 deletions

View File

@ -1,5 +1,5 @@
# Base folder support # Base folder support
# Copyright (C) 2002-2015 John Goerzen & contributors # Copyright (C) 2002-2016 John Goerzen & contributors
# #
# This program is free software; you can redistribute it and/or modify # This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by # it under the terms of the GNU General Public License as published by
@ -832,7 +832,7 @@ class BaseFolder(object):
except Exception as e: except Exception as e:
self.ui.error(e, exc_info()[2], self.ui.error(e, exc_info()[2],
msg = "Copying message %s [acc: %s]"% (uid, self.accountname)) msg = "Copying message %s [acc: %s]"% (uid, self.accountname))
raise #raise on unknown errors, so we can fix those raise # Raise on unknown errors, so we can fix those.
def __syncmessagesto_copy(self, dstfolder, statusfolder): def __syncmessagesto_copy(self, dstfolder, statusfolder):
"""Pass1: Copy locally existing messages not on the other side. """Pass1: Copy locally existing messages not on the other side.
@ -870,13 +870,14 @@ class BaseFolder(object):
continue continue
self.ui.copyingmessage(uid, num+1, num_to_copy, self, dstfolder) self.ui.copyingmessage(uid, num+1, num_to_copy, self, dstfolder)
# exceptions are caught in copymessageto()
# Exceptions are caught in copymessageto().
if self.suggeststhreads(): if self.suggeststhreads():
self.waitforthread() self.waitforthread()
thread = threadutil.InstanceLimitedThread( thread = threadutil.InstanceLimitedThread(
self.getinstancelimitnamespace(), self.getinstancelimitnamespace(),
target = self.copymessageto, target = self.copymessageto,
name = "Copy message from %s:%s" % (self.repository, self), name = "Copy message from %s:%s"% (self.repository, self),
args = (uid, dstfolder, statusfolder) args = (uid, dstfolder, statusfolder)
) )
thread.start() thread.start()
@ -884,7 +885,7 @@ class BaseFolder(object):
else: else:
self.copymessageto(uid, dstfolder, statusfolder, register=0) self.copymessageto(uid, dstfolder, statusfolder, register=0)
for thread in threads: for thread in threads:
thread.join() thread.join() # Block until all "copy" threads are done.
# Execute new mail hook if we have new mail. # Execute new mail hook if we have new mail.
if self.have_newmail: if self.have_newmail:

View File

@ -621,7 +621,7 @@ class IMAPServer(object):
It's OK if we have maxconnections + 1 or 2 threads, which is what this It's OK if we have maxconnections + 1 or 2 threads, which is what this
will help us do.""" will help us do."""
self.semaphore.acquire() self.semaphore.acquire() # Blocking until maxconnections has free slots.
self.semaphore.release() self.semaphore.release()
def close(self): def close(self):

View File

@ -1,4 +1,4 @@
# Copyright (C) 2002-2012 John Goerzen & contributors # Copyright (C) 2002-2016 John Goerzen & contributors
# Thread support module # Thread support module
# #
# This program is free software; you can redistribute it and/or modify # This program is free software; you can redistribute it and/or modify
@ -243,6 +243,7 @@ class InstanceLimitedThread(ExitNotifyThread):
def start(self): def start(self):
global limitedNamespaces global limitedNamespaces
# Will block until the semaphore has free slots.
limitedNamespaces[self.limitNamespace].acquire() limitedNamespaces[self.limitNamespace].acquire()
ExitNotifyThread.start(self) ExitNotifyThread.start(self)