Tokio (softuer)

Tokio është një libari softueri për gjuhën e programimit Rust. Ajo siguron një kohë ekzekutimi dhe funksione që mundësojnë përdorimin e I/O asinkrone, duke lejuar njëkohshmëri në lidhje me përfundimin e detyrës.   

Tokio u lëshua në gusht 2016 për Rust, një gjuhë programimi për qëllime të përgjithshme . Zhvilluar nga Carl Lerche, Tokio filloi si një kornizë aplikimi rrjeti dhe mbështet veçori të tilla si dëgjimi dhe transmetimi i socket-eve, duke lejuar që mesazhet të transferohen midis kompjuterëve.

 Veçoritë 

 Kodi asinkron 
Tokio lejon përdorimin e funksioneve asinkrone në Rust përmes krijimit të një kohe ekzekutimi asinkrone. Kjo mund të realizohet përmes makros #[tokio::main] . 

Për shembull:#[tokio::main]
async fn main() -> Result<()> {
  let url = "https://en.wikipedia.org/";
  let text = reqwest::get(url).await?.text().await?;
  println!("{}", text);
  Ok(())
}Në këtë shembull, arka (ang. crate) reqwest përdoret për të kërkuar gjuhën e shënjimit të hipertekstit (HTML) për Wikipedian në anglisht . Për të siguruar që kërkesa të mos trajtohet menjëherë, Tokio e mbështjell thirrjen e funksionit në një kohë ekzekutimi asinkrone, duke pritur që kërkesa të përfundojë përpara se të thërrasë println() .

Tokio përfshin gjithashtu një version të librarisë standarde Rust që është krijuar për t'u përdorur në mënyrë asinkrone. Për shembull, tokio::fs::read_to_end(), i cili lexon përmbajtjen e një skedari, është versioni asinkron i std::fs::read_to_end() .  Për më tepër, Tokio mbështet io_uring, një ndërfaqe asinkrone syscall I/O Linux, në një arkë të veçantë të quajtur tokio-uring .  

 Modeli i korutinës 
Tokio më tej i lejon përdoruesit të krijojnë detyra (ang. tasks), të cilat janë korutina pa stivë, duke përdorur një funksion tokio::spawn() . Detyrat ekzekutohen në nivelin e përdoruesit, duke siguruar njëkohshmëri edhe kur ka një thread të vetëm. 

 Dëgjimi i socket-it 
Tokio është në gjendje të dëgjojë në një socket përmes një qasjeje jo-bllokuese .  Në veçanti, struktura TcpListener lidh një dëgjues socket-i të Protokollit të Kontrollit të Transmisionit (TCP) me një adresë dhe ekzekuton funksionin në mënyrë asinkrone. 

 Transmetimi 
Tokio ofron një lloj kanali transmetimi, duke lejuar transmetimin e mesazheve në marrës të shumtë. Me dërgimin e një mesazhi, ai merret nga marrës të tillë. Kjo mundëson komunikimin në kohë reale dhe sistemet e shpërndara, ndër aplikacionet e tjera.