Function web_thread::web::scope_async

source ·
pub fn scope_async<'scope, 'env: 'scope, F1, F2, T>(
    f: F1,
) -> ScopeFuture<'scope, 'env, F2, T> 
where F1: FnOnce(&'scope Scope<'scope, 'env>) -> F2, F2: Future<Output = T>,
Available on Web only.
Expand description

Async version of scope().

§Notes

Keep in mind that if ScopeFuture is dropped it will block, or spinloop if blocking is not supported on this thread (see has_block_support()), until all threads are joined but does not continue polling the passed Future.

§Example

let value = AtomicUsize::new(0);

web_thread::web::scope_async(|scope| async {
	(0..3).for_each(|_| {
		scope.spawn(|| value.fetch_add(1, Ordering::Relaxed));
	});

	value.fetch_add(1, Ordering::Relaxed);
}).await;

assert_eq!(value.load(Ordering::Relaxed), 4);