println!("data fd: {}, must be {fd}", data.fd);
Спойлер: во втором случае если и удасться их заспавнить, то cpu будет занят лишь одним - переключением контекста с треда на тред.
экономить процессорное время.На моих тестах (как и на тех, что я находил в сети) единственное что Tokio делает лучше с точки зрения производительности - это сон. Спит Tokio действительно гораздо дешевле. Если рассмотреть стандартную библиотеку, то она работает далеко не всегда синхронно. Иногда она "паркует" потоки и "будит" их только в момент готовности. Мои тесты подтверждают это теорию.
#[inline(always)]
pub fn len(&self) -> usize {
let mut l;
unsafe {
// first byte is length
l = (*self.ptr) as usize | (*self.ptr.offset(1) as usize) << 8;
if l < 65535 {
return l;
}
return (*self.ptr.offset(2) as usize) | (*self.ptr.offset(3) as usize) << 8 | (*self.ptr.offset(4) as usize) << 16 | (*self.ptr.offset(5) as usize) << 24;
}
}