summaryrefslogtreecommitdiff
path: root/lib/git/async
Commit message (Collapse)AuthorAgeFilesLines
* improved testing to test the actual async handling of the pool. there are ↵Sebastian Thiel2010-06-073-5/+30
| | | | still inconsistencies that need to be fixed, but it already improved, especially the 4-thread performance which now is as fast as the dual-threaded performance
* task: Fixed incorrect handling of channel closure. Performance is alright ↵Sebastian Thiel2010-06-072-25/+39
| | | | for up to 2 threads, but 4 are killing the queue
* Moved pool utilities into util module, fixed critical issue that caused ↵Sebastian Thiel2010-06-074-126/+176
| | | | havok - lets call this a safe-state
* added high-speed locking facilities, allowing our Queue to be faster, at ↵Sebastian Thiel2010-06-072-58/+186
| | | | 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-072-6/+23
| | | | | | 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
* changed scheduling and chunksize calculation in respect to the ↵Sebastian Thiel2010-06-071-76/+137
| | | | task.min_count, to fix theoretical option for a deadlock in serial mode, and unnecessary blocking in async mode
* pool.consumed_tasks: is now a queue to be thread safe, in preparation for ↵Sebastian Thiel2010-06-072-11/+23
| | | | | | 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-074-54/+55
| | | | single task for now, but next up are dependent tasks
* channel.read: enhanced to be sure we don't run into non-atomicity issues ↵Sebastian Thiel2010-06-061-17/+72
| | | | related to our channel closed flag, which is the only way not to block forever on read(0) channels which were closed by a thread 'in the meanwhile'
* Plenty of fixes in the chunking routine, made possible by a serialized ↵Sebastian Thiel2010-06-063-17/+58
| | | | chunking test. Next up, actual async processing
* First step of testing the pool - tasks have been separated into a new module ↵Sebastian Thiel2010-06-065-111/+246
| | | | 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-063-37/+127
| | | | | | | is handled by the task system graph: implemented it including test according to the pools requirements pool: implemented set_pool_size
* Improved pool design and started rough implementation, top down to learn ↵Sebastian Thiel2010-06-063-68/+290
| | | | while going. Tests will be written soon for verification, its still quite theoretical
* Renamed mp to async, as this is a much better name for what is actually ↵Sebastian Thiel2010-06-054-0/+428
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