summaryrefslogtreecommitdiffstats
path: root/async/src/async.cpp
Commit message (Collapse)AuthorAge
* KAsync has moved to it's own kasync.git repositoryDan Vrátil2015-05-18
|
* Async: rename Async namespace to KAsyncDan Vrátil2015-05-15
|
* Async::waitChristian Mollekopf2015-04-28
| | | | Useful in i.e. loops that have to wait a bit before every execution.
* Async: add runtime executor tracing for easier debuggingDan Vrátil2015-04-11
|
* Async: fix buildDan Vrátil2015-04-10
|
* Async: improve error handling and error propagationDan Vrátil2015-04-06
| | | | | | The error is now propagated to the top-most (user-owned) Future. When an error occurs, no further tasks are executed. The first error handler function in the chain is also called, if there's any.
* Async: support (re-)executing single Job multiple timesDan Vrátil2015-04-01
| | | | | | | | | | | | | | | | | | | Storing Future and current Job progress directly in Executors means that we cannot re-execute finished job, or even execute the same Job multiple times in parallel. To do so, we need to make Executors stateless and track the state elsewhere. This change does that by moving the execution state from Executor to Execution class. Executors now only describe the tasks to execute, while Execution holds the current state of execution. New Execution is created every time Job::exec() is called. Execution holds reference to it's result (Future) and Executor which created the Execution. This ensures that Executor is not deleted when Job (which owns Executors) goes out of scope while the execution is still running. At the same time Future holds reference to relevant Execution, so that the Execution is deleted when all copies of Future referring result from the respective Execution are deleted.
* dowhile cleanup, second dowhile version without separate condition.Christian Mollekopf2015-04-01
|
* Async: allow appending Jobs to already running or finished JobsDan Vrátil2015-02-21
| | | | | | | | | When user gets a Job (from a method call for instance), which is already running or might have even finished already, they can still append a new Job to the chain and re-execute it. The Job will internally chain up to the last finished Job, use it's result and continue from the next Job in the chain. If a Job in the chain is still running, it will wait for it to finish and pass the result to the next Job in the chain.
* Async: don't leak ExecutorsDan Vrátil2015-02-07
| | | | | | We now hold executors in shared pointers. We cannot easilly delete them, as they are referenced from two objects (the Job they belong to, and the next job), and the lifetime of the jobs is unclear.
* Async: relicense from GPLv2 to LGPLv2+Dan Vrátil2014-12-18
|
* Async: bring back synchronous Future::waitForFinished()Dan Vrátil2014-12-14
|
* Async: make the processing truly asynchronousDan Vrátil2014-12-14
| | | | | | Now calling exec() starts the first job and returns a pending Future immediately. Caller can then use Async::FutureWatcher to wait for the future to become finished, i.e. for all jobs to finish execution.
* Async: move some more code out-of-lineDan Vrátil2014-12-12
|
* Async: move some common code from executors to shared base classDan Vrátil2014-12-12
|
* Async: move the actual task exection into Executor implementationDan Vrátil2014-12-11
| | | | | | | As of now, Job is only front interface to a chain of Executor subclasses. Each Executor subclass specializes for given type of execution (then, each, reduce, ...), and the chain is then executed recursively, as we did with the original Job implementation.
* Async: move some definitions out-of-lineDan Vrátil2014-12-11
|
* Prototype of Async libraryDan Vrátil2014-12-11