Sobes.tech
Junior — Middle

Πώς πραγματοποιείται η αλληλεπίδραση μεταξύ των κορουτινών στο πλαίσιο ενός προγράμματος;

sobes.tech AI

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

Στο Android (και Kotlin), η αλληλεπίδραση μεταξύ των κορουτινών πραγματοποιείται συνήθως μέσω μηχανισμών συγχρονισμού και ανταλλαγής δεδομένων, όπως:

  • Channels (Κανάλια) — επιτρέπουν την αποστολή και λήψη δεδομένων μεταξύ κορουτινών ασύγχρονα.
  • SharedFlow και StateFlow — αντιδραστικά ρεύματα για τη διάδοση γεγονότων και καταστάσεων.
  • Κοινό πλαίσιο ή αντικείμενα με συγχρονισμό — π.χ., Mutex για την προστασία κοινών πόρων.

Παράδειγμα χρήσης ενός καναλιού για ανταλλαγή μηνυμάτων μεταξύ κορουτινών:

val κανάλι = Channel<String>()

// Πομπός
launch {
    κανάλι.send("Γειά από την κορουτίνα")
}

// Δέκτης
launch {
    val μήνυμα = κανάλι.receive()
    println(μήνυμα)
}

Έτσι, οι κορουτίνες μπορούν να ανταλλάσσουν δεδομένα και να συντονίζουν τη δουλειά τους χωρίς να μπλοκάρουν νήματα.