Points de connaissance: synchrone et asynchrone, bloquant et non bloquant

1. Introduction

Dans certains blogs ou scénarios techniques, il y a souvent synchrone, asynchrone, bloquant et non bloquant. Ce qui suit présente brièvement la différence.

2 Blocage synchrone

2.1 Solution de base

Le client envoie une demande au serveur. À ce stade, le serveur met beaucoup de temps à traiter la tâche et le client est bloqué par le serveur. Le client attend donc toujours la réponse du serveur. À ce stade, le client ne peut rien faire et le serveur ne l'acceptera pas. Demandes d'autres clients. Ce mécanisme de communication est relativement simple et grossier, mais il n'est pas efficace.

2.2 Exemples

Le blocage synchrone est souvent dit BIO.

Je vais aux toilettes. En ce moment, les fosses sont pleines. Je dois attendre que les fosses soient libérées avant de pouvoir y aller, non? ! À ce moment-là, je ne faisais rien, je me tenais dans les toilettes et je le regardais, quelqu'un sortait après un moment, alors je me suis accroupi rapidement.

3 Synchrone non bloquant

3.1 Solution de base

Le client envoie une demande au serveur. À ce stade, le serveur met beaucoup de temps à traiter la tâche. À ce stade, bien que le client attende toujours une réponse, le serveur peut traiter d'autres demandes et reviendra après un certain temps. . Cette méthode est très efficace: un serveur peut traiter de nombreuses requêtes sans être bloqué car la tâche n'est pas traitée, elle n'est donc pas bloquante.

3.2 Exemples

Le non-blocage synchrone est souvent dit NIO.

Je suis allé aux toilettes. En ce moment, les fosses sont pleines. Tout va bien. Mon frère n’est pas pressé. Je vais fumer une cigarette. Je reviendrai voir s’il y a des postes vacants.

4 Blocage asynchrone

4.1 Solution de base

Le client envoie une requête au serveur. À ce stade, le serveur met beaucoup de temps à traiter la tâche, mais le client n'attend pas que le serveur réponde, il peut effectuer d'autres tâches, attendre que le serveur traite le résultat , puis traitez le client une fois le rappel reçu. Réponse du serveur. Cette méthode permet d'éviter tout le temps l'état d'attente du client et d'optimiser l'expérience utilisateur. En fait, elle est similaire à la requête asynchrone ajax initiée dans la page Web.

4.2 Exemples

Je suis allé à la salle de bain, et les fosses étaient pleines à ce moment-là. Je n'attendais rien. Quand il y a une nouvelle vacance, qu'il me prévienne. S'il m'informe, je vais m'accroupir.

5 Asynchrone non bloquant

5.1 Réponses de base

Le client envoie une demande au serveur. À ce stade, le serveur met beaucoup de temps à traiter la tâche. Bien que le traitement de la tâche prenne beaucoup de temps à ce stade, le client peut effectuer d’autres tâches car il traite la réponse dans la fonction de rappel asynchrone; en même temps, le serveur a raison ou tort. Blocage, afin que le serveur puisse gérer d'autres tâches, donc ce mode est très efficace.

5.2 Exemples

Le non-blocage asynchrone est souvent dit AIO.

Je suis allé aux toilettes. Pour le moment, les fosses sont pleines. Ça va. Je ne suis pas pressé. Je vais aux toilettes et je fume une cigarette avant de jouer avec mon téléphone. Quand une nouvelle fosse est libérée, quelqu'un le fera prévenez-moi Oui, je viendrai.

6 Résumé

Cela peut être vu à partir de cet exemple de vie:

  • La synchronisation signifie que je dois suivre une formation en rotation pour voir s'il y a des postes vacants;
  • Asynchrone signifie que quelqu'un vous avertira après avoir tiré la fosse, et vous retournerez vous accroupir après la notification;
  • Le blocage est en train d'attendre, vous ne faites rien d'autre, attendez simplement;
  • Le non-blocage signifie que vous pouvez faire d'autres choses pendant que vous attendez, comme fumer, boire, vous repasser les cheveux, jouer avec votre téléphone portable.

异步Les avantages sont évidents, améliorant considérablement l'expérience utilisateur, 非阻塞rendant la surcharge des ressources système beaucoup plus petite que le 阻塞mode, car le système n'a pas besoin de créer de nouveaux processus (ou threads), économise considérablement les ressources système peuvent être plus hors du système pour autre middleware pour servir le.

7 Informations connexes

  • Le billet de blog n'est pas facile, tous ceux qui ont travaillé si dur pour prêter attention et féliciter, merci

Je suppose que tu aimes

Origine blog.csdn.net/qq_15769939/article/details/113307392
conseillé
Classement