Τι είναι οι μη μπλοκαρισμένες πρίζες;
Τι είναι οι μη μπλοκαρισμένες πρίζες;

Βίντεο: Τι είναι οι μη μπλοκαρισμένες πρίζες;

Βίντεο: Τι είναι οι μη μπλοκαρισμένες πρίζες;
Βίντεο: Παιδιά πρόσφυγες μπλοκαρισμένα στην ουδέτερη ζώνη των τουρκικών συνόρων 2024, Νοέμβριος
Anonim

μη - μπλοκάρισμα πριζών . Η λύση σε αυτό το πρόβλημα ονομάζεται " μη - μπλοκάρισμα πριζών Από προεπιλογή, TCP πρίζες είναι μέσα " μπλοκάρισμα " mode. Για παράδειγμα, όταν καλείτε την recv() για ανάγνωση από μια ροή, ο έλεγχος δεν επιστρέφεται στο πρόγραμμά σας έως ότου διαβαστεί τουλάχιστον ένα byte δεδομένων από τον απομακρυσμένο ιστότοπο.

Αντίστοιχα, τι είναι η αποκλειστική και η μη μπλοκαρισμένη υποδοχή;

Σε μπλοκάρισμα λειτουργία, recv, αποστολή, σύνδεση (μόνο TCP) και αποδοχή (μόνο TCP) πρίζα Οι κλήσεις API θα ΟΙΚΟΔΟΜΙΚΟ ΤΕΤΡΑΓΩΝΟ επ' αόριστον μέχρι να πραγματοποιηθεί η ζητούμενη ενέργεια. Σε μη - μπλοκάρισμα λειτουργία, αυτές οι λειτουργίες επιστρέφουν αμέσως. επιλέξτε θα ΟΙΚΟΔΟΜΙΚΟ ΤΕΤΡΑΓΩΝΟ μέχρι το πρίζα είναι έτοιμο.

Μπορεί επίσης να ρωτήσει κανείς, οι πρίζες μπλοκάρουν από προεπιλογή; Με Προκαθορισμένο , TCP πρίζες τοποθετούνται σε α μπλοκάρισμα τρόπος. Αυτό σημαίνει ότι το στοιχείο ελέγχου δεν επιστρέφεται στο πρόγραμμά σας μέχρι να ολοκληρωθεί κάποια συγκεκριμένη λειτουργία.

Σχετικά με αυτό, πώς φτιάχνεις μια non blocking πρίζα;

Για να σημειώσετε α πρίζα όπως και μη - μπλοκάρισμα , χρησιμοποιούμε την κλήση συστήματος fcntl. Ακολουθεί ένα παράδειγμα: int flags = guard(fcntl(socket_fd, F_GETFL), "δεν ήταν δυνατή η λήψη σημαιών αρχείων"); guard(fcntl(socket_fd, F_SETFL, flags | O_NONBLOCK), "δεν μπορούσε σειρά σημαίες αρχείου");

Τι είναι το μπλοκάρισμα πρίζας;

ΕΝΑ πρίζα μπορεί να είναι σε " λειτουργία αποκλεισμού " ή "μη αποκλεισμός τρόπος ." Οι λειτουργίες του πρίζες σε μπλοκάρισμα (ή σύγχρονη) τρόπος μην επιστρέψετε μέχρι να ολοκληρώσουν τη δράση τους. Αυτό ονομάζεται μπλοκάρισμα επειδή η πρίζα του οποίου η συνάρτηση κλήθηκε δεν μπορεί να κάνει τίποτα - είναι μπλοκαρισμένο - μέχρι να επιστρέψει η κλήση.

Συνιστάται: