Show the crate…
2 stable releases
2.0.1 | Apr 3, 2021 |
---|---|
2.0.0 | Apr 2, 2021 |
#40 in #tetcore
237 downloads per month
Used in 54 crates
(2 directly)
385KB
7K
SLoC
Runtime asynchronous, pure computational tasks.
License: Apache-2.0
lib.rs
:
Runtime tasks.
Contains runtime-usable functions for spawning parallel purely computational tasks.
NOTE: This is experimental API. NOTE: When using in actual runtime, make sure you don't produce unbounded parallelism. So this is bad example to use it:
fn my_parallel_computator(data: Vec<u8>) -> Vec<u8> {
unimplemented!()
}
fn test(dynamic_variable: i32) {
for _ in 0..dynamic_variable { tp_tasks::spawn(my_parallel_computator, vec![]); }
}
While this is a good example:
use codec::Encode;
static STATIC_VARIABLE: i32 = 4;
fn my_parallel_computator(data: Vec<u8>) -> Vec<u8> {
unimplemented!()
}
fn test(computation_payload: Vec<u8>) {
let parallel_tasks = (0..STATIC_VARIABLE).map(|idx|
tp_tasks::spawn(my_parallel_computator, computation_payload.chunks(10).nth(idx as _).encode())
);
}
When allowing unbounded parallelism, malicious transactions can exploit it and partition network consensus based on how much resources nodes have.
Dependencies
~3–11MB
~123K SLoC