Quiz
Fragen
- Wie definiert man den Programmcode, der in einem separaten Thread ausgeführt wird?
- Welche Wege gibt es, den Borrow-Checker davon zu überzeugen, dass Variablen in Threads zu keinen baumelnden Referenzen führen?
- Wie kann man verhindern, dass das Hauptprogramm beendet wird, bevor alle separaten Threads fertig sind?
- Unter welchen Umständen ist das Ergebnis eines
thread::spawn
-Calls einResult::Err
? - Wie kann man Daten aus dem Hauptthread in einem separaten Thread verwenden?
- Wie kann ich in Daten, die in einem separaten Thread erstellt wurden, im Hauptthread verwenden?
- Wie kann ich Daten aus einem separaten Thread in einem anderen separaten Thread verwenden?
Aufgabe
Schreibe ein Programm, dass als interaktiven User-Input via stdin().read_line
einen Pfad zu einer Textdatei enthalten soll. Nach Eingabe des Pfades soll ein separater Thread gestartet werden, der die durch Leerzeichen getrennten Wörter in dieser Textdatei zählt. Das Hauptprogramm soll nach dem Starten des Threads sofort wieder bereit stehen, um die nächste Benutzereingabe für einen neuen Pfad entgegenzunehmen, auch wenn der erste Zähl-Thread noch nicht fertig ist. Sobald eine Benutzereingabe keinen Pfad zu einer Textdatei ist, wird die Liste bisher verarbeiteten Pfaden und Wortanzahlen ausgegeben und das Programm beendet.