Sobes.tech
Junior — Middle

Πώς υλοποιείται η ασυγχρονία κατά τη χρήση των κορουτινών;

sobes.tech AI

Απάντηση από AI

Η ασυγχρονία στις coroutine επιτυγχάνεται μέσω της παύσης και της επανεκκίνησης της εκτέλεσης χωρίς να μπλοκάρουν τα νήματα. Όταν μια coroutine συναντά μια λειτουργία που μπορεί να διαρκέσει χρόνο (π.χ. ένα αίτημα δικτύου), διακόπτεται (suspend), ελευθερώνοντας το νήμα για άλλες εργασίες. Μετά την ολοκλήρωση της λειτουργίας, η coroutine συνεχίζει από το ίδιο σημείο.

Αυτό υλοποιείται μέσω του μηχανισμού των suspend συναρτήσεων και του μεταγλωττιστή, που μετατρέπει τις coroutine σε τελικούς αυτοματισμούς καταστάσεων. Έτσι, οι coroutine επιτρέπουν τη συγγραφή ασύγχρονου κώδικα σε γραμμική μορφή χωρίς ρητές callback.

Παράδειγμα σε Kotlin:

suspend fun fetchData(): String {
    delay(1000) // διακόπτει την coroutine για 1 δευτερόλεπτο χωρίς να μπλοκάρει το νήμα
    return "Data loaded"
}

fun main() = runBlocking {
    val result = fetchData() // περιμένει ασύγχρονα το αποτέλεσμα
    println(result)
}