Con Rust 1.9, mi piacerebbe leggere da un timeout mpsc::channel
o. C'è un chiaro linguaggio per fare questo lavoro? Ho visto l'approccio instabile descritto in mpsc::Select
ma this Github discussion suggerisce che non è un approccio robusto. C'è un modo migliore per me per ottenere la semantica di ricezione o sospensione?Lettura da un canale o timeout?
6
A
risposta
5
Non so come faresti con i canali della libreria standard, ma il chan crate riporta un chan_select!
macro:
#[macro_use]
extern crate chan;
use std::time::Duration;
fn main() {
let (_never_sends, never_receives) = chan::sync::<bool>(1);
let timeout = chan::after(Duration::from_millis(50));
chan_select! {
timeout.recv() => {
println!("timed out!");
},
never_receives.recv() => {
println!("Shouldn't have a value!");
},
}
}
2
Rust 1.12 introdotto Receiver::recv_timeout
:
use std::sync::mpsc::channel;
use std::time::Duration;
fn main() {
let (.., rx) = channel::<bool>();
let timeout = Duration::new(3, 0);
println!("start recv");
let _ = rx.recv_timeout(timeout);
println!("done!");
}
Problemi correlati
- 1. Canale di sola lettura Canale
- 2. Timeout lettura console
- 3. Lettura da file o stdin
- 4. Timeout del canale di richiesta durante l'attesa di una risposta
- 5. Telegramma Bot Come eliminare o rimuovere un messaggio o un supporto da un canale o un gruppo
- 6. Porta seriale Linux: blocco lettura con timeout
- 7. Cassandra frequente lettura e scrittura Timeout
- 8. Lettura timeout su/batch/project (SonarQube 4.5)
- 9. Java: canale di I/O asincrono per le linee di lettura e scrittura
- 10. Come implementare un timeout nella chiamata alla funzione di lettura?
- 11. Lettura da file di testo delimitato da virgole o tabulazioni
- 12. Lettura continua da un flusso?
- 13. Lettura da un file app.config
- 14. Come creare un canale da un altro con i trasduttori?
- 15. Utilizzo diretto del canale o utilizzo di un proxy?
- 16. Estrazione del canale audio da Linear PCM
- 17. Esempio di pipe denominate IPC con timeout di lettura/scrittura
- 18. Lettura alimentazione da usb
- 19. interi lettura da un file in Chuck
- 20. API YouTube da caricare sul canale Business
- 21. Lettura valori da DataTable
- 22. Come leggere (ripetutamente) da .NET SslStream con un timeout?
- 23. Android (Java) HttpURLConnection ritentivo silenzioso su timeout 'lettura'
- 24. Perché il tipo di canale ha un '<-' in esso?
- 25. Lettura non bloccante da I/O standard in C#
- 26. Esiste un canale di identità?
- 27. Posso leggere da un socket in modo sincrono utilizzando Boost.Asio con un timeout su un servizio I/O con multithreading?
- 28. Lettura di dati da un file plist
- 29. Lettura da un file gzip in python
- 30. Lettura da un enorme MemoryStream in C#