Crate async_tasks_state_map
source ·Expand description
§Introduction
A struct for recording execution status of async tasks with async methods.
Functions:
- Able to host
Futures and query whether they are not found, running, successful, failed, or revoking. - Able to host
Futures to revoke the succeededFutures and make them not found.
Dependency:
- Depend on
tokiowith featurert, so cannot use other async runtimes. - Depend on scc for async
HashMap.
Use this crate if:
- Easy to generate an unique
task_id(not necessarilyString) for a future (task). - Don’t want tasks with the same
task_idto succeed more than once. - Require linearizability.
- Want to revoke a task, and don’t want the revoking to succeed more than once.
A recorder can only use single task_id type. The type of task_id should be:
Eq + Hash + Clone + Send + Sync + 'static- Cheap to clone (sometimes can use
Arc) (only cloned once when launch).
async_tasks_recorder is another implement depending on
HashSet, which is easier to iterate every task in the same state. But you should not use that crate if you only focus on iterate only once state. Instead, you can collect the tasks in certain state into an externalArc<HashSet>.
§State Transition Diagram
┌------- Revoking ←-----┐
↓ |
NotFound --> Working --> Success
↑ |
| ↓
Failed
- Can only launch when
NotFoundorFailed. - Can only revoke when
Success.
§Usage
Just look at the AsyncTasksRecorder.
Re-exports§
pub use scc;
Structs§
- Thread-safe. Can be shared by
cloning(Arcis used internally).