Tokio (softuer)
Autor | Carl Lerche |
---|---|
Versioni i parë | dhjetor 23, 2020 |
Versioni i fundit | 1.41.1[1] |
Gjuhet e programimit | Rust |
Sistemi operativ | macOS, Windows, Linux, FreeBSD, WebAssembly |
Përdoret për | Librari asinkrone |
Licenca | Licenca MIT |
Faqja zyrtare | tokio |
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. [2] [3] [4]
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ë
[Redakto | Redakto nëpërmjet kodit]Kodi asinkron
[Redakto | Redakto nëpërmjet kodit]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]
. [5]
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()
. [6] 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
. [7] [8]
Modeli i korutinës
[Redakto | Redakto nëpërmjet kodit]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. [9]
Dëgjimi i socket-it
[Redakto | Redakto nëpërmjet kodit]Tokio është në gjendje të dëgjojë në një socket përmes një qasjeje jo-bllokuese . [10] 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. [11]
Transmetimi
[Redakto | Redakto nëpërmjet kodit]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. [12]
- ^ "Release 1.41.1". 7 nëntor 2024. Marrë më 1 dhjetor 2024.
{{cite web}}
: Mungon ose është bosh parametri|language=
(Ndihmë!) - ^ Chanda, Abhishek (2018). Network Programming with Rust: Build fast and resilient network servers and clients by leveraging Rust's memory-safety and concurrency features. Birmingham: Packt Publishing. ISBN 978-1-78862-171-7. OCLC 1028194311.
{{cite book}}
: Mungon ose është bosh parametri|language=
(Ndihmë!) - ^ Sharma, Rahul (2019). Mastering Rust : learn about memory safety, type system, concurrency, and the new features of Rust 2018 edition. Vesa Kaihlavirta (bot. Second). Birmingham, UK. ISBN 978-1-78934-118-8. OCLC 1090681119.
{{cite book}}
: Mungon ose është bosh parametri|language=
(Ndihmë!)Mirëmbajtja CS1: Mungon shtëpia botuese te vendodhja (lidhja) - ^ De Simone, Sergio (2021-01-06). "Rust Asynchronous Runtime Tokio Reaches 1.0". InfoQ (në anglisht). Marrë më 2021-11-21.
- ^ "Hello Tokio". Tokio. Marrë më 2021-11-28.
{{cite web}}
: Mungon ose është bosh parametri|language=
(Ndihmë!) - ^ "I/O". Tokio. Marrë më 11 dhjetor 2022.
{{cite web}}
: Mungon ose është bosh parametri|language=
(Ndihmë!) - ^ Krill, Paul (2021-01-08). "Tokio Rust runtime reaches 1.0 status". InfoWorld (në anglisht). Marrë më 2021-09-03.
- ^ "Announcing tokio-uring: io-uring support for Tokio". Tokio. Marrë më 2021-11-28.
{{cite web}}
: Mungon ose është bosh parametri|language=
(Ndihmë!) - ^ Sintes, Tony (13 prill 2001). "Four for the ages". InfoWorld. Marrë më 5 janar 2023.
{{cite web}}
: Mungon ose është bosh parametri|language=
(Ndihmë!) - ^ Lerche, Carl (3 gusht 2016). "Announcing Tokio". Marrë më 11 dhjetor 2022.
{{cite web}}
: Mungon ose është bosh parametri|language=
(Ndihmë!) - ^ Eguia Moraza, Iban (2018). Rust high performance : learn to skyrocket the performance of your Rust applications. Birmingham, UK. ISBN 978-1-78847-823-6. OCLC 1033544275.
{{cite book}}
: Mungon ose është bosh parametri|language=
(Ndihmë!)Mirëmbajtja CS1: Mungon shtëpia botuese te vendodhja (lidhja) - ^ Blandy, Jim; Orendoff, Jason; Tindall, Leonara (2019). Programming Rust. Sebastopol. ISBN 9781492052548.
{{cite book}}
: Mungon ose është bosh parametri|language=
(Ndihmë!)Mirëmbajtja CS1: Mungon shtëpia botuese te vendodhja (lidhja)