mirror of
https://github.com/LukasKalbertodt/programmieren-in-rust.git
synced 2026-05-04 22:41:12 +02:00
Add sheet12
This commit is contained in:
Executable
+14
@@ -0,0 +1,14 @@
|
||||
Aufgabe 1: Sleep Sort
|
||||
=====================
|
||||
|
||||
Sortieralgorithmen sind ja immer toll. Da wir jetzt Multithreading können, wollen wir "Sleep Sort" implementieren. Der Trick ist:
|
||||
|
||||
- Für jeden Integer im zu sortierenden Array wird ein Thread gestartet
|
||||
- Jeder Thread schläft entsprechend seinem Integer lange
|
||||
- Sobald der Thread aufwacht, pusht er seinen Integer auf ein Ergebnis-Array
|
||||
|
||||
Danach sollte das Ergebnis-Array theoretisch sortiert sein. Um zu untersuchen, wie weit Theorie und Praxis voneinander abweichen, prüfen wir ab welchen Zeitdimensionen der Scheduler genau genug wird:
|
||||
|
||||
Zuerst soll jeder Thread sein Element in *Nano*sekunden schlafen. Nanosekunden sind eher kurz und hier wird man bei einem Array wie `[83, 12, 13, 35, 91]` noch keinen Erfolg haben. Wenn wir nach dem ersten Versuch feststellen, dass das Ergebnis-Array nicht sortiert ist, versuchen wir es noch mal. Diesmal soll aber jeder Thread zwei mal sein Element in Nanosekunden schlafen.
|
||||
|
||||
Entsprechend erhöhen wir die Zeit, für die geschlafen werden soll, mit jedem Versuch um Faktor 2. Euer Programm soll am Ende ausgeben, wie viele Versuche gebraucht wurden und welcher Zeit-Multiplikator schließlich ausreichte, um das Array zu sortieren.
|
||||
Reference in New Issue
Block a user