Nama: Rachel Mathilda
NPM: 2206081673
Kelas: B
- executor berfungsi untuk menerima tugas dari ready_queue. executor sendiri merupakan single-threaded yang cara prosesnya satu per satu.
- spawner berfungsi untuk menjadwalkan tugas baru ke kanal tanpa dieksekusi secara langsung.
- task berfungsi untuk mengelola Future yang dibungkus dalam Arc.
- timerfuture berfungsi untuk delay durasi tertentu. disini pakai 2 detik saja.
alasan mengapa yang Rachel's Computer: hey hey muncul terlebih dahulu dibanding Rachel's Computer: howdy! dan Rachel's Computer: done! adalah karena baris tersebut di eksekusi sebelum executor memproses tugas di kanal. setelah itu ada drop(spawner) yang menghapus spawner sehingga tugas baru ga di proses lagi karena udah masuk ke kanal. kemudian executor.run() memproses tugas yang sudah ada di kanal.
spawning menambahkan tugas Task ke antrian dengan metode Spawner::spawn. dengan ada spawning maka tugas ga langsung dieksekusi tapi nunggu di kernel.
fungsi:
- spawner berfungsi untuk untuk jadwalin Future baru ke antrian untuk di eksekusi executor
- executor berfungsi untuk ambil tugas di kanal dan proses sampai selesai
- drop berfungsi untuk menghapus spawner dan nutup ujung pengirim kanal (SyncSender), dengan kata lain aba-aba kalau gaada Spawner lain yang bakal masuk ke kanal sehingga kanal bisa ditutup (program selesai)
kenapa urutannya bukan howdy terus done itu karena ada jeda 2 detik kemudian executor memproses tugas dari kanal secara First-In, First-Out. selain itu, program ga berhenti karena fungsi drop dihapus.
