Mit Rust 1.9, würde ich gerne von einem mpsc::channel
oder Timeout lesen. Gibt es eine klare Sprache, um das zu schaffen? Ich habe den in mpsc::Select
beschriebenen unstabilen Ansatz gesehen, aber this Github discussion schlägt vor, dass es kein robuster Ansatz ist. Gibt es einen besser empfohlenen Weg, um eine Semantik für den Empfang oder die Zeitüberschreitung zu erreichen?Lesen von einem Kanal oder Timeout?
6
A
Antwort
5
Ich weiß nicht, wie Sie es mit der Standardbibliothek Kanälen tun würden, aber die chan crate bietet ein chan_select!
Makro:
#[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 Receiver::recv_timeout
eingeführt:
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!");
}
Verwandte Themen
- 1. Undected "Deadlock" beim Lesen von Kanal
- 2. Setzen Socket Timeout auf Netty-Kanal
- 3. PyVisa lesen Timeout
- 4. asio :: lesen mit Timeout
- 5. ActionCable: Umleiten zu Pfad oder Aktion von einem Kanal
- 6. Kann ein Slackbot Nachrichten von einem privaten Kanal abrufen und in einem anderen Slack-Kanal posten?
- 7. Gerinne Veranstaltungen von Kafka Kanal in Spark Scala lesen?
- 8. Verbindungs-Timeout beim Lesen von Mails über Javamail
- 9. Bluetooth-Verbindung fehlgeschlagen. java.io.IOException: Lesen fehlgeschlagen, Socket möglicherweise geschlossen oder Timeout, lesen ret: -1
- 10. Telegramm Bietet Wie löschen oder eine Nachricht oder Medien aus einem Kanal oder eine Gruppe entfernen
- 11. OpenX-Targeting-Kanal-Setup ("ODER" -Funktionalität)
- 12. Linux Serial Port: Blockieren mit Timeout lesen
- 13. Kanal Ursprung, wie Anruf von einem lokalen Kanal zu tun? (Anruf Intercom und senden dtmf)
- 14. Datei mit Timeout in Python lesen
- 15. Behandlung Solr lesen und schreiben Timeout Ausnahme
- 16. Verzögerung() oder Timeout mit Stop()?
- 17. PHP lesen oder kopiert Datei von einem Netzlaufwerk (Fenster)
- 18. Schreiben/Lesen von einem Vektor (oder ArrayList) mit zwei Threads
- 19. 1-Kanal-Bitmap zu einem SDL_Texture
- 20. Winkelmesser Kann die Eigenschaft 'timeout' von undefined nicht lesen
- 21. Animierte GIF mit Transparenz oder Alpha-Kanal mit LeaveInPlace Entsorgungsmethode lesen
- 22. Selector.select (timeout) 0 zurück, bevor Timeout
- 23. Wählen Sie mit Kanal <- <- Kanal
- 24. Timeout auf einem GET Webrequest
- 25. Wie erstelle ich einen Kanal von einem anderen mit Wandlern?
- 26. Spring Integration http: Inbound-Kanal-Adapter Fehler-Kanal
- 27. Anzahl der Elemente in einem Kanal
- 28. Konvertiere 1-Kanal-Bild in 3-Kanal
- 29. Kann ich von einem Socket synchron mit Boost.Asio mit einem Timeout für einen Multithread-E/A-Dienst lesen?
- 30. Lesen von einem USB-Barcodescanner