Sobes.tech
Junior — Middle

Μπορείτε να εξηγήσετε την έννοια του token ακύρωσης στο πλαίσιο του πολυνηματικού προγραμματισμού;

sobes.tech AI

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

Το διακριτικό ακύρωσης (Cancellation Token) στον πολυνηματικό προγραμματισμό είναι ένα αντικείμενο που χρησιμοποιείται για τον συντονισμό της ακύρωσης ασύγχρονων ή παράλληλων λειτουργιών.

Βασική ιδέα: ένα νήμα (ή συστατικό) μπορεί να ζητήσει την ακύρωση μιας λειτουργίας, και άλλα που εκτελούν αυτή τη λειτουργία μπορούν περιοδικά να ελέγχουν την κατάσταση του διακριτικού και να τερματίζουν σωστά αν ζητηθεί ακύρωση.

Στην C#, αυτό υλοποιείται μέσω των κλάσεων CancellationToken και CancellationTokenSource:

  • Το CancellationTokenSource δημιουργεί ένα διακριτικό και μπορεί να σηματοδοτήσει την ακύρωση.
  • Το CancellationToken περνάει σε εργασίες ή μεθόδους που μπορούν να ελέγχουν το IsCancellationRequested και να αντιδρούν στην ακύρωση.

Παράδειγμα:

var cts = new CancellationTokenSource();
var token = cts.Token;

Task.Run(() => {
    while (!token.IsCancellationRequested)
    {
        // Εκτέλεση εργασίας
    }
    // Καθαρισμός και τερματισμός
}, token);

// Κάπου στον κώδικα, ζητάμε ακύρωση
cts.Cancel();

Αυτό επιτρέπει την ασφαλή και ελεγχόμενη διακοπή μακροχρόνιων ή φόντου λειτουργιών.