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();
Αυτό επιτρέπει την ασφαλή και ελεγχόμενη διακοπή μακροχρόνιων ή φόντου λειτουργιών.