diff --git a/src/lib.rs b/src/lib.rs index 57e3590..a301fd2 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -430,29 +430,7 @@ impl Runner { &self, future: impl Future + Send + 'static, ) -> JoinHandle { - let mut guard = self.state.lock().unwrap(); - - let task = guard - .pop_available_head() - .unwrap_or_else(|| Task::allocate(self.inner.next_task_id())); - - guard.pending.insert(task.task_id, Arc::clone(&task)); - - let (tx, rx) = oneshot(); - *task.fut.lock().unwrap() = Some(Box::pin(async move { - let _ = tx.send(future.await); - })); - guard.wake(task); - guard.spawn_count += 1; - - if guard.should_heuristic_unpark() { - if let Some(thread) = self.inner.parked.lock().unwrap().pop_front() { - thread.unpark(); - } - guard.update_unpark(); - } - - JoinHandle { rx } + self.state.lock().unwrap().spawn(&self.inner, future) } fn block_on(