summaryrefslogtreecommitdiff
path: root/lib/git/async/thread.py
Commit message (Collapse)AuthorAgeFilesLines
* Removed async from treeSebastian Thiel2010-06-121-201/+0
|
* test_task: fixed import error, made all modules from x import * safeSebastian Thiel2010-06-111-0/+4
|
* Improved shutdown handling - although its impossible to prevent some stderr ↵Sebastian Thiel2010-06-111-8/+17
| | | | printing thanks to the underlying threading implementation, we can at least make sure that the interpreter doesn't block during shutdown. Now it appears to be running smoothly
* IMPORTANT: sometimes, when notifying waiters by releasing their lock, the ↵Sebastian Thiel2010-06-111-2/+0
| | | | lock is not actually released or they are not actually notifyied, staying in a beautysleep. This glitch is probably caused by some detail not treated correctly in the thread python module, which is something we cannot fix. It works most of the time as expected though - maybe some cleanup is not done correctly which causes this
* Added dependency-task tests, and fixed plenty of ref-count related bugs, as ↵Sebastian Thiel2010-06-101-21/+22
| | | | well as concurrency issues. Now it works okay, but the thread-shutdown is still an issue, as it causes incorrect behaviour making the tests fail. Its good, as it hints at additional issues that need to be solved. There is just a little more left on the feature side, but its nearly there
* thread: fixed initialization problem if an empty iterable was handed inSebastian Thiel2010-06-091-2/+6
| | | | | queue: Queue now derives from deque directly, which safes one dict lookup as the queue does not need to be accessed through self anymore pool test improved to better verify threads are started correctly
* queue: fixed critical bug in the notify method, as it was not at all ↵Sebastian Thiel2010-06-091-3/+6
| | | | | | thread-safe, causing locks to be released multiple times. Now it runs very fast, and very stable apparently. Now its about putting previous features back in, and studying their results, before more complex task graphs can be examined
* workerthread: adjusted to use a blocking queue, it will receive termination ↵Sebastian Thiel2010-06-081-7/+17
| | | | events only with its queue, with boosts performance into brigt green levels
* Its getting better already - intermediate commit before further chaning the ↵Sebastian Thiel2010-06-081-1/+2
| | | | task class
* Moved pool utilities into util module, fixed critical issue that caused ↵Sebastian Thiel2010-06-071-7/+9
| | | | havok - lets call this a safe-state
* added high-speed locking facilities, allowing our Queue to be faster, at ↵Sebastian Thiel2010-06-071-3/+0
| | | | least in tests, and with multiple threads. There is still an sync bug in regard to closed channels to be fixed, as the Task.set_done handling is incorrecft
* Added task order cache, and a lock to prevent us walking the graph while ↵Sebastian Thiel2010-06-071-1/+2
| | | | | | changing tasks Now processing more items to test performance, in dual-threaded mode as well, and its rather bad, have to figure out the reason for this, probably gil, but queues could help
* pool.consumed_tasks: is now a queue to be thread safe, in preparation for ↵Sebastian Thiel2010-06-071-0/+5
| | | | | | multiple connected pools Reduced waiting time in tests to make them complete faster
* pool: First version which works as expected in async mode. Its just using a ↵Sebastian Thiel2010-06-071-34/+9
| | | | single task for now, but next up are dependent tasks
* First step of testing the pool - tasks have been separated into a new module ↵Sebastian Thiel2010-06-061-2/+7
| | | | including own tests, their design improved to prepare them for some specifics that would be needed for multiprocessing support
* thread: adjusted worker thread not to provide an output queue anymore - this ↵Sebastian Thiel2010-06-061-22/+5
| | | | | | | is handled by the task system graph: implemented it including test according to the pools requirements pool: implemented set_pool_size
* Renamed mp to async, as this is a much better name for what is actually ↵Sebastian Thiel2010-06-051-0/+203
going on. The default implementation uses threads, which ends up being nothing more than async, as they are all locked down by internal and the global interpreter lock