Potrei creare un thread separato per fungere da coda I/O, ma non sono sicuro se questo sia il modo migliore. Sembra il miglioreCome leggere un file in modo asincrono?
Non so come caricare un file locale con mio.
Potrei creare un thread separato per fungere da coda I/O, ma non sono sicuro se questo sia il modo migliore. Sembra il miglioreCome leggere un file in modo asincrono?
Non so come caricare un file locale con mio.
Suggerirei semplicemente di staccare un altro filo da soli. io
non ha intenzione di fare questo, e fare il proprio caricatore asincrono consente di avere il controllo completo su come e quando le letture/scritture avvengono, il che è importante se la prestazione è il tuo obiettivo (come immagino sia, se hai bisogno di un disco asincrono I/O). Puoi scegliere se scrivere/leggere singoli byte, linee singole o accumulare blocchi e scriverli. Se l'applicazione è in attesa su qualcos'altro in altri momenti, come la rete, è possibile scegliere di scrivere su disco, ad esempio.
Puoi citare alcune fonti che suggeriscono che ** io ** dalla libreria standard, non ha intenzione di supportare questo? – Shepmaster
Il motivo per cui non è possibile trovare la modalità di lettura asincrona di un file con mio è perché è esplicitamente elencato come non obiettivo per quel progetto.^_^ – Shepmaster
Non posso dire molto su Rust, ma dal punto di vista del sistema operativo (questo è vero per la stragrande maggioranza, se non tutti, i sistemi mainstream) la creazione di un thread è di gran lunga la soluzione migliore. L'I/O asincrono è implementato male, inutile o non funziona affatto su tutti i sistemi operativi tradizionali (indipendentemente da quanto affermano). – Damon
Si potrebbe provare 'madvise' con' MADV_WILLNEED'. In Rust sarà nella cassa 'libc' (https://crates.io/crates/libc/; http://rust-lang-nursery.github.io/libc/x86_64-unknown-linux-gnu/ libc/fn.madvise.html). – ArtemGr