let worker start block longer.

This commit is contained in:
fakeshadow 2021-04-28 03:25:52 +08:00
parent 73fc384514
commit aaeaa0aebd
3 changed files with 21 additions and 23 deletions

View File

@ -189,27 +189,25 @@ impl Accept {
loop { loop {
match self.poll.poll(&mut events, self.timeout) { match self.poll.poll(&mut events, self.timeout) {
Ok(_) => { Ok(_) => {}
for event in events.iter() { Err(e) if e.kind() == io::ErrorKind::Interrupted => {}
let token = event.token(); Err(e) => panic!("Poll error: {}", e),
match token { }
WAKER_TOKEN => {
let should_return = self.handle_waker(&mut sockets); for event in events.iter() {
if should_return { let token = event.token();
return; match token {
} WAKER_TOKEN => {
} let should_return = self.handle_waker(&mut sockets);
_ => { if should_return {
let token = usize::from(token); return;
self.accept(&mut sockets, token)
}
} }
} }
_ => {
let token = usize::from(token);
self.accept(&mut sockets, token)
}
} }
Err(e) => match e.kind() {
std::io::ErrorKind::Interrupted => {}
_ => panic!("Poll error: {}", e),
},
} }
// check for timeout and re-register sockets. // check for timeout and re-register sockets.

View File

@ -12,6 +12,7 @@ use std::{
}; };
use actix_rt::{ use actix_rt::{
task::yield_now,
time::{sleep, Instant, Sleep}, time::{sleep, Instant, Sleep},
System, System,
}; };
@ -304,8 +305,6 @@ impl ServerWorker {
match res { match res {
Ok(services) => { Ok(services) => {
f(None);
let worker = ServerWorker { let worker = ServerWorker {
rx, rx,
rx2, rx2,
@ -320,6 +319,8 @@ impl ServerWorker {
let worker = local.spawn_local(worker); let worker = local.spawn_local(worker);
handle.block_on(local.run_until(async { handle.block_on(local.run_until(async {
yield_now().await;
f(None);
let _ = worker.await; let _ = worker.await;
})); }));
} }
@ -344,8 +345,6 @@ impl ServerWorker {
match res { match res {
Ok((services, rt)) => { Ok((services, rt)) => {
f(None);
let worker = ServerWorker { let worker = ServerWorker {
rx, rx,
rx2, rx2,
@ -360,6 +359,8 @@ impl ServerWorker {
let handle = local.spawn_local(worker); let handle = local.spawn_local(worker);
local.block_on(&rt, async { local.block_on(&rt, async {
yield_now().await;
f(None);
let _ = handle.await; let _ = handle.await;
}); });
} }

View File

@ -36,7 +36,6 @@ fn test_bind() {
}); });
let handle = rx.recv().unwrap(); let handle = rx.recv().unwrap();
thread::sleep(Duration::from_millis(500));
assert!(net::TcpStream::connect(addr).is_ok()); assert!(net::TcpStream::connect(addr).is_ok());
let _ = handle.stop(true); let _ = handle.stop(true);
let _ = h.join().unwrap(); let _ = h.join().unwrap();