Types de moteurs asynchrones, types, types de moteurs. Mode asynchrone de machine synchrone excitée

Lors de l'accès à une primitive asynchrone (également appelée non bloquante), le processus n'est pas suspendu.

Ainsi, après qu'un processus a appelé la primitive Envoyer, le système d'exploitation rend le contrôle au processus immédiatement après que le message soit mis en file d'attente pour transmission ou après qu'une copie du message soit créée. Lorsqu'un message a été transmis ou copié vers un emplacement sécurisé pour une transmission ultérieure, le processus d'envoi est interrompu et ainsi informé que le tampon de message peut être à nouveau utilisé.

Si une copie du message n'est pas créée, alors toute modification apportée au message par le processus d'envoi après l'invocation de la primitive d'envoi, mais avant l'envoi du message, est risquée.

De même, après avoir accédé à la primitive de réception asynchrone, le processus continue de s'exécuter. Lorsqu'un message arrive, le processus est informé de cet événement par une interruption ou une interrogation périodique.

Les primitives asynchrones permettent aux processus d'accéder aux systèmes de transmission de messages de manière efficace et flexible.

L’inconvénient de cette approche est que les programmes utilisant de telles primitives sont difficiles à tester et à déboguer.

Les événements qui dépendent du temps et ne peuvent pas être reproduits peuvent créer des problèmes insolubles.

Une alternative consiste à utiliser des primitives synchrones ou, comme on les appelle aussi, bloquantes.

Lorsqu'une primitive d'envoi synchrone est appelée, le contrôle ne revient pas au processus d'envoi jusqu'à ce que le message soit envoyé (service peu fiable) ou jusqu'à ce que la confirmation de la livraison du message soit reçue (service fiable).

La primitive de blocage de réception ne sera renvoyée que lorsque le message sera dans le tampon qui lui est alloué.

Appels de procédure à distance

Un appel de procédure distante (RPC) est une variante du modèle de transmission de messages de base.

Aujourd’hui, les appels de procédures distantes constituent une méthode courante et largement utilisée pour encapsuler les interactions dans un système distribué. L'essence de cette technique est de permettre à des programmes sur différentes machines de communiquer entre eux en appelant simplement des procédures comme s'ils s'exécutaient sur la même machine.

Ainsi, le mécanisme d'appel de procédure permet d'accéder aux services proposés par la machine distante.

La popularité de cette approche est due aux avantages suivants :

Les appels de procédure sont une abstraction courante et bien comprise.

Les appels de procédure distante vous permettent de spécifier une interface distante sous la forme d'un ensemble d'opérations nommées sur des objets de types spécifiés. De cette façon, l'interface peut être clairement documentée et une vérification de type statique peut être effectuée dans un programme distribué.

L'interface étant standardisée et définie avec précision, le programme de communication de l'application peut être généré automatiquement.

L'interface étant standardisée et bien définie, les développeurs peuvent écrire des modules client et serveur qui ne nécessitent que des modifications mineures du code source du programme pour être portés sur d'autres plates-formes et systèmes d'exploitation.

Le mécanisme d'appel de procédure à distance peut être considéré comme un système avancé pour la transmission fiable de messages synchrones.

L'architecture générale est illustrée sur la Fig. 17.11, b, a sur la Fig. La figure 17.13 montre un diagramme plus détaillé. Le programme appelant effectue un appel de procédure normal avec des paramètres sur sa machine.

Par exemple : APPELER P(X. Y)

Ici ♦ P est le nom de la procédure ;

♦ X - arguments passés ;

♦ Y - valeurs de retour. Le fait qu'un appel de procédure à distance ait réellement lieu sur une autre machine peut être transparent ou non pour l'utilisateur. Ce que l'on appelle l'exécuteur de la procédure P, ou stub, doit être inclus dans l'espace d'adressage du processus appelant ou lié dynamiquement au moment de l'appel.

Stub crée un message identifiant la procédure appelée et contenant ses paramètres. Il envoie ensuite ce message au système distant et attend une réponse.

Lorsqu'une réponse est reçue, le stub rend le contrôle au programme qui l'a appelé et lui transmet les valeurs de retour. Sur la machine distante, un autre stub est associé à la procédure appelée.

Lorsqu'un message arrive, le stub l'examine et, sur la base du nom et des paramètres de la procédure reçus, forme un appel local régulier CALL P(X, Y).

Autrement dit, la procédure distante est appelée localement, le paramètre standard passant par la pile.

Riz. 17.13. Mécanisme d'appel de procédure à distance

Liaison client-serveur Une liaison vous permet de spécifier la relation entre une procédure distante et son programme appelant. Une liaison est formée une fois que deux applications ont établi une connexion logique et sont prêtes à échanger des commandes et des données.

La liaison peut être permanente ou éphémère. Avec une liaison non persistante, une connexion logique entre deux processus est établie uniquement pour la durée de l'appel de procédure distante.

Dès que la procédure distante renvoie des valeurs, la connexion est fermée. Une connexion active consomme des ressources car les deux parties doivent conserver des informations sur son état.

L'utilisation de connexions temporaires permet de sauvegarder ces ressources. D’un autre côté, l’établissement d’une connexion nécessite du temps et une surcharge du réseau, cette approche n’est donc pas adaptée aux procédures distantes qui sont souvent appelées par le même processus.

Avec la liaison persistante, la connexion établie pour un appel de procédure distante persiste après le retour de la procédure distante.

Cette connexion peut être utilisée pour les appels de procédure distants ultérieurs. Si la connexion n'est pas utilisée pendant un certain intervalle, elle est interrompue. Cette conception est utile pour les applications qui effectuent de nombreux appels de procédures à distance.

Dans ce cas, la liaison persistante permet d'effectuer des appels et de recevoir leurs résultats via la même connexion logique.

4.4 Comparaison des systèmes de communication synchrones et asynchrones

Généralement, lorsque l'on considère les performances du récepteur ou du démodulateur, un certain niveau de synchronisation du signal est supposé. Par exemple, la démodulation de phase cohérente (PSK) suppose que le récepteur peut générer des signaux de référence dont la phase est identique (peut-être avec un décalage constant près) à la phase des éléments de l'alphabet du signal de l'émetteur. Ensuite, lors du processus de prise de décision concernant la valeur du symbole reçu (en utilisant le principe du maximum de vraisemblance), les signaux de référence sont comparés aux signaux entrants.

Lors de la génération de tels signaux de référence, le récepteur doit être synchronisé avec la porteuse reçue. Cela signifie que la phase du transporteur entrant et sa copie chez le récepteur doivent être cohérentes. En d’autres termes, s’il n’y a aucune information codée dans la porteuse entrante, la porteuse entrante et sa copie chez le récepteur passeront par zéro en même temps. Ce processus est appelé boucle à verrouillage de phase (c'est une condition qui doit être satisfaite le plus fidèlement possible si l'on veut démoduler avec précision les signaux modulés de manière cohérente dans le récepteur). Grâce à la boucle à verrouillage de phase, l'oscillateur local du récepteur est synchronisé en fréquence et en phase avec le signal reçu. Si le signal porteur module directement une sous-porteuse plutôt qu'une porteuse, la phase de la porteuse et la phase de la sous-porteuse doivent être déterminées. Si l'émetteur ne verrouille pas la phase de la porteuse et de la sous-porteuse (c'est généralement le cas), le récepteur devra générer une copie de la sous-porteuse, le contrôle de phase de la copie de la sous-porteuse étant contrôlé séparément du contrôle de phase de la sous-porteuse. porte-copie. Cela permet au récepteur d'obtenir un verrouillage de phase sur la porteuse et la sous-porteuse.

De plus, le récepteur est supposé savoir exactement où commence et où il se termine le symbole entrant. Ces informations sont nécessaires pour connaître l'intervalle d'intégration du symbole approprié (l'intervalle d'intégration énergétique) avant de prendre une décision concernant la signification du symbole. Évidemment, si le récepteur intègre sur un intervalle de longueur inappropriée ou sur un intervalle couvrant deux symboles, la capacité à prendre une décision précise sera réduite.

On peut voir que la synchronisation des symboles et la synchronisation des phases ont en commun d'impliquer toutes deux la création d'une copie d'une partie du signal transmis au niveau du récepteur. Pour le verrouillage de phase, ce sera une copie exacte du support. Pour symbolique, il s'agit d'un méandre avec une transition par zéro simultanément à la transition du signal entrant entre les symboles. Un récepteur capable de faire cela est dit avoir une synchronisation des symboles. Puisqu'il y a généralement un très grand nombre de périodes porteuses par période de symbole, ce deuxième niveau de synchronisation est beaucoup plus grossier que la synchronisation de phase et est généralement réalisé en utilisant un circuit différent de celui utilisé en synchronisation de phase.

De nombreux systèmes de communication nécessitent un niveau de synchronisation encore plus élevé, communément appelé synchronisation de trames. La synchronisation des trames est requise lorsque les informations sont transmises sous forme de blocs ou de messages contenant un nombre fixe de caractères. Cela se produit, par exemple, lorsque du code bloc est utilisé pour mettre en œuvre un système de protection contre les erreurs de transmission ou lorsque le canal de communication est partagé en temps et utilisé par plusieurs utilisateurs (technologie TDMA). Avec le codage par blocs, le décodeur doit connaître l'emplacement des limites entre les mots de code, ce qui est nécessaire au décodage correct du message. Lorsque vous utilisez un canal à répartition temporelle, vous devez connaître l'emplacement des limites entre les utilisateurs du canal, ce qui est nécessaire au bon sens de l'information. Comme la synchronisation des symboles, la synchronisation de trame équivaut à la capacité de générer une onde carrée à une fréquence de trame avec des transitions nulles coïncidant avec les transitions d'une trame à la suivante.

La plupart des systèmes de communications numériques utilisant une modulation cohérente nécessitent les trois niveaux de synchronisation : phase, symbole et trame. Les systèmes de modulation non cohérents nécessitent généralement uniquement une synchronisation des symboles et des trames ; la modulation n'étant pas cohérente, un verrouillage de phase précis n'est pas nécessaire. De plus, les systèmes incohérents nécessitent une synchronisation de fréquence. La synchronisation de fréquence diffère de la synchronisation de phase en ce sens que la copie de la porteuse générée par le récepteur peut présenter des déphasages arbitraires par rapport à la porteuse reçue. La structure du récepteur peut être simplifiée s'il n'est pas nécessaire de déterminer la valeur de phase exacte de la porteuse entrante. Malheureusement, cette simplification entraîne une détérioration de la dépendance de la fiabilité de la transmission au rapport signal sur bruit.

Jusqu’à présent, la discussion s’est concentrée sur l’extrémité destinataire du canal de communication. Cependant, l'émetteur joue parfois un rôle plus actif dans la synchronisation : il modifie le timing et la fréquence de ses transmissions pour correspondre aux attentes du récepteur. Un exemple de ceci est un réseau de communications par satellite, dans lequel de nombreux terminaux au sol envoient des signaux à un seul récepteur satellite. Dans la plupart de ces cas, l'émetteur utilise le canal de communication inverse du récepteur pour déterminer la précision du timing. Par conséquent, une synchronisation réussie des émetteurs nécessite souvent une communication ou une mise en réseau bidirectionnelle. Pour cette raison, la synchronisation des émetteurs est souvent appelée synchronisation réseau.

Il existe un coût associé à la nécessité de synchroniser le récepteur. Chaque niveau de synchronisation supplémentaire implique un coût système plus élevé. L'investissement le plus évident est le besoin de logiciels ou de matériel supplémentaire pour que le récepteur puisse acquérir et maintenir la synchronisation. Aussi, et de manière moins évidente, on paie parfois en temps passé à se synchroniser avant le début de la communication, ou en énergie nécessaire à la transmission des signaux qui seront utilisés au niveau du récepteur pour obtenir et maintenir la synchronisation. À ce stade, on peut se demander pourquoi un concepteur de système de communication devrait même envisager une conception de système qui nécessite un degré élevé de synchronisation. La réponse : des performances et une polyvalence améliorées.

Prenons l’exemple d’une radio AM analogique commerciale typique, qui peut constituer un élément important d’un système de communication de diffusion comprenant un émetteur central et plusieurs récepteurs. Ce système de communication n'est pas synchronisé. Dans le même temps, la bande passante du récepteur doit être suffisamment large pour inclure non seulement le signal d'information, mais également les fluctuations de la porteuse résultant de l'effet Doppler ou de la dérive de la fréquence de référence de l'émetteur. Cette exigence de bande passante de l'émetteur signifie qu'une énergie de bruit supplémentaire est fournie au détecteur au-delà de l'énergie théoriquement requise pour transmettre des informations. Les récepteurs légèrement plus sophistiqués contenant un système de suivi de fréquence porteuse peuvent inclure un filtre passe-bande étroit centré sur la porteuse, ce qui réduira considérablement l'énergie du bruit et augmentera le rapport signal/bruit reçu. Par conséquent, bien que les radios conventionnelles soient tout à fait adaptées à la réception de signaux provenant de grands émetteurs sur des distances de plusieurs dizaines de kilomètres, elles peuvent échouer dans des conditions moindres.

Pour les communications numériques, les compromis entre performances du récepteur et complexité sont souvent pris en compte lors du choix de la modulation. Les récepteurs numériques les plus simples incluent ceux conçus pour être utilisés avec FSK binaire avec détection non cohérente. La seule exigence est la synchronisation des bits et le suivi de fréquence. Cependant, si vous choisissez un schéma BPSK cohérent comme modulation, vous pouvez obtenir la même probabilité d'erreur sur les bits, mais avec un rapport signal/bruit inférieur (d'environ 4 dB). Un inconvénient de la modulation BPSK est que le récepteur nécessite un suivi de phase précis, ce qui peut présenter un défi de conception si les signaux ont des taux Doppler élevés ou sont sujets à l'évanouissement.

Un autre compromis entre prix et performances concerne le codage correcteur d’erreurs. Des améliorations significatives des performances sont possibles lorsque des techniques appropriées de protection contre les erreurs sont utilisées. Dans le même temps, le prix, exprimé en complexité du récepteur, peut être élevé. Le bon fonctionnement d'un décodeur de blocs nécessite que le récepteur réalise une synchronisation de bloc, de trame ou de message. Cette procédure s'ajoute à la procédure de décodage normale, bien que certains codes de correction d'erreurs aient une synchronisation de bloc intégrée. Les codes convolutifs nécessitent également une synchronisation supplémentaire pour obtenir des performances optimales. Bien que l’analyse des performances des codes convolutifs suppose souvent que la longueur de la séquence d’entrée est infinie, ce n’est pas le cas en pratique. Par conséquent, pour garantir une probabilité d'erreur minimale, le décodeur doit connaître l'état initial (généralement tous les zéros) à partir duquel commence la séquence d'informations, l'état final et le temps nécessaire pour atteindre l'état final. Savoir quand l'état initial se termine et quand l'état final est atteint équivaut à avoir une synchronisation de trame. De plus, le décodeur doit savoir regrouper les symboles de canal pour prendre une décision de branchement. Cette exigence s'applique également à la synchronisation.

La discussion ci-dessus sur les compromis a été effectuée en termes de compromis entre les performances et la complexité des canaux et récepteurs individuels. Il convient de noter que la capacité de synchronisation a également des implications potentielles importantes liées à l'efficacité et à la polyvalence du système. La synchronisation de trames permet l'utilisation de techniques avancées et universelles d'accès multiple telles que les schémas d'accès multiple basés sur la demande (DAMA). De plus, l'utilisation de techniques d'étalement du spectre (à la fois d'accès multiple et de suppression des interférences) nécessite un niveau élevé de synchronisation du système. Ces technologies offrent la possibilité de créer des systèmes très polyvalents, ce qui constitue une fonctionnalité très importante lorsque le système change ou est soumis à des interférences intentionnelles ou non provenant de diverses sources externes.


Conclusion

La première section de mon travail décrit les principes de construction de systèmes de télécommunication sans fil : un schéma de construction d'un système de communication cellulaire est donné, les méthodes de séparation des abonnés dans les communications cellulaires sont indiquées et les avantages (confidentialité et immunité au bruit) du code la séparation par rapport au temps et à la fréquence est notée, et les normes sans fil courantes sont également prises en compte. communications DECT, Bluetooth et Wi-Fi (802.11, 802.16).

Ensuite, la corrélation et les propriétés spectrales des signaux sont considérées et, par exemple, des calculs des spectres de certains signaux (impulsion rectangulaire, cloche gaussienne, impulsion lissée) et des fonctions d'autocorrélation des signaux de Barker et des fonctions de Walsh courantes dans les communications numériques sont donnés, comme ainsi que les types de signaux complexes pour les systèmes de télécommunication sont indiqués.

Le troisième chapitre présente les méthodes de modulation de signaux complexes : méthodes de modulation par déplacement de phase, modulation avec déplacement de fréquence minimum (une des méthodes de modulation à phase continue), modulation d'amplitude en quadrature ; et leurs avantages et inconvénients sont indiqués.

La dernière partie de l'ouvrage contient une considération des probabilités d'erreurs dans la distinction de M signaux connus et M fluctuants sur fond d'interférence, ainsi qu'un algorithme de calcul des erreurs dans la distinction de M signaux orthogonaux avec une position temporelle inconnue dans les systèmes de communication asynchrones. avec division de code.


Références :

1. Ratynsky M.V. Fondamentaux des communications cellulaires / Ed. D. B. Zimina - M. : Radio et Communications, 1998. - 248 p.

2. Sklyar B. Communication numérique. Fondements théoriques et application pratique, 2e édition : Trad. de l'anglais – M. : Maison d'édition Williams, 2003. – 1104 p.

3. Shakhnovich I. Technologies modernes de communication sans fil. Moscou : Tekhnosphère, 2004. – 168 p.

4. Baskakov S.I. Circuits et signaux d'ingénierie radio : manuel. pour les universités à des fins spéciales "Ingénierie radio". – 3e éd., révisée. et supplémentaire – M. : Plus haut. école, 2000. – 462 p.

5. Signaux de type bruit dans les systèmes de transmission d'informations. Éd. prof. V.B. Pestriakov. M., «Sov. radio", 1973. – 424 p.

6. Varakin L.E. Systèmes de communication avec des signaux de type bruit. – M. : Radio et Communications, 1985. – 384 p.

7. Vishnevsky V.M., Lyakhov A.I., Portnoy S.L., Shakhnovich I.V. Réseaux de transmission d'informations sans fil à large bande. Moscou : Tekhnosphère, 2005. – 592 p.

8. Radchenko Yu.S., Radchenko T.A. Efficacité de la séparation des codes des signaux avec heure d'arrivée inconnue. Actes de la 5ème Internationale. conf. « Radar, navigation, communications » - RLNC-99, Voronej, 1999, vol 1, p. 507-514.

9. Systèmes d'ingénierie radio : manuel. pour les universités à des fins spéciales « Ingénierie radio » / Yu.P. Grishin, vice-président. Ipatov, Yu.M. Kazarinov et autres ; Éd. Yu.M. Kazarinova. – M. : Plus haut. école, 1990. – 469 p.

En fonctionnement normal, deux moments agissent sur l'arbre du générateur (nous pensons que le moment de résistance provoqué par le frottement dans les roulements et la résistance du fluide de refroidissement peut être négligé) : couple turbine Mt, faisant tourner le rotor du générateur et essayant d'accélérer sa rotation, et couple électromagnétique synchrone Madame, neutralisant la rotation du rotor. En cas de déséquilibre entre le couple de la turbine et le couple électromagnétique (de freinage) du générateur, selon la gravité de la perturbation, des oscillations synchrones ou un mode asynchrone du générateur peuvent survenir.

Mode asynchrone (asynchronerégime) – mode transitoire dans le système électrique, caractérisé par une rotation asynchrone d'une partie des générateurs du système électrique.

Les modes asynchrones peuvent survenir suite à :

Violations de la stabilité statique dues à une augmentation de la puissance transmise le long des lignes électriques au-delà de la valeur admissible ;

Violations de la stabilité dynamique dues à des perturbations d'urgence (courts-circuits, arrêt des équipements de production ou des installations électriques des consommateurs) ;

Allumage asynchrone de lignes électriques et de générateurs ;

Pertes d'excitation du générateur.

Il est à noter que les modes de fonctionnement asynchrone d'une machine synchrone non excitée et excitée diffèrent sensiblement les uns des autres.

1. Mode asynchrone de la machine synchrone excitée

A titre d'exemple, considérons la transition d'un générateur vers un mode de fonctionnement asynchrone en raison d'une violation de la stabilité dynamique (voir Fig. 1) lorsqu'un court-circuit se produit avec la ligne électrique déconnectée.

Un trait caractéristique de cette dépendance est la présence d'un maximum et d'un minimum clairement définis. La différence entre le mode asynchrone et les oscillations synchrones en termes de changements de courant réside uniquement dans la valeur de la valeur de courant maximale dans le cycle d'oscillation et la durée de ces oscillations. Étant donné que l'angle lors des oscillations synchrones peut théoriquement atteindre sa valeur critique, il est impossible de distinguer le mode asynchrone des oscillations synchrones uniquement par la valeur actuelle. Par conséquent, les dispositifs ALAR, basés sur l'identification d'un mode asynchrone par les fluctuations de courant, sont configurés pour fonctionner sur le deuxième, le troisième, etc. cycle en mode asynchrone. En d'autres termes, un mode sélectivement asynchrone ne peut être détecté que par des fluctuations de courant à long terme avec une amplitude non inférieure à celle donnée et une période non supérieure à celle calculée.

Dépendance du changement de tension et de l'angle mutuel entre deux vecteurs de tension en mode asynchrone

L'expression de détermination de la tension aux points intermédiaires est déterminée conformément à la deuxième loi de Kirchhoff à l'aide de la formule suivante :

Distance relative du point contrôlé sous tension par rapport au point sous tension.

En mode asynchrone, le vecteur EMF d'une machine synchrone désynchronisée commence à tourner par rapport au vecteur EMF des machines fonctionnant de manière synchrone. Il convient de noter que dans le cas général, la rotation du vecteur peut se produire aussi bien dans le sens des aiguilles d'une montre que dans le sens inverse :

dans le sens inverse des aiguilles d'une montre accélérer

Si le vecteur du système électrique n°2 tourne dans le sens des aiguilles d'une montre, alors cela indique que les générateurs du système électrique n°2 ralentir concernant les générateurs du système électrique n°1.

A titre d'exemple, considérons la rotation du vecteur du système n°2 dans le schéma de calcul présenté « dans le sens des aiguilles d'une montre ».

L'analyse des expressions obtenues montre qu'au moment où la tension du système n°1 et du système n°2 diverge d'un angle de 180 degrés (rotation asynchrone), la puissance active change de signe, et la valeur de la puissance réactive atteint son valeur maximale. Cette fonctionnalité de changement de puissance au moment d'une rotation asynchrone est utilisée par divers fabricants dans les appareils ALAR, quelle que soit la base de l'élément (appareils électromécaniques ou à microprocesseur).

Dans le cas général, l'hodographe du vecteur puissance totale (S= P.+ j Q) au lieu de mesure (installation du relais de puissance), il y a une ellipse (dépendance de P sur Q) lorsque l'angle change. Les caractéristiques des changements dans l'hodographe de puissance dans le cycle asynchrone permettent d'identifier le moment d'apparition du mode asynchrone, s'il est possible d'enregistrer la transition de l'hodographe spécifié à partir de la plage d'angle ~0<δ<180° в диапазон ~180 0 <δ<360 0 при выполнении дополнительного условия, характеризующего зону δ≈180°.

Dépendance du changement de résistance en mode asynchrone

La résistance aux bornes du relais de résistance est déterminée comme le quotient de la tension au point contrôlé divisé par le courant.

Prise en compte de la relation entre les modules de tension aux extrémités de la ligne électrique l'expression résultante peut être transformée sous la forme suivante :

L'analyse de l'expression résultante montre que l'hodographe de résistance est un cercle (ellipse) décalé par rapport à l'origine des coordonnées. En fonction du rapport des modules de tension aux extrémités de la ligne électrique, la caractéristique de changement de résistance a une forme différente.

Je suis curieux qu'async s'attende à une fonctionnalité de streaming intégrée.

Tout le monde dit que l'async est bien meilleur en termes de performances car il libère les threads en attente d'une réponse à un long appel asynchrone. D'accord, je comprends.

Mais considérez ce scénario.

J'ai une méthode asynchrone qui effectue une opération asynchrone sur une base de données. L'API de base de données fournit la fonction BeginQuery et l'événement QueryCompleted. Je les ai enveloppés dans une tâche (en utilisant TaskCompletionSource).

Ma question est de savoir ce qui se passe sous le capot entre l'appel BeginQuery et le déclenchement de QueryCompleted.

Je veux dire – ne serait-il pas nécessaire de créer une sorte de travailleur pour déclencher cet événement ? À un niveau très bas, il doit y avoir une boucle synchrone qui bloque le résultat de lecture du thread à partir de la base de données.

Je pense que tout appel asynchrone devrait générer un thread pour traiter réellement la réponse (peut-être l'attendre dans une boucle C++ de bas niveau dans le code du pilote).

Notre seul « gain » est donc que le thread appelant peut être libéré pendant qu'un autre thread fait son travail.

L’appel d’une méthode asynchrone crée-t-il toujours un nouveau thread de travail ?

Quelqu'un peut-il confirmer ma compréhension ?

4 réponses

Tout le monde dit que l'async est bien meilleur en termes de performances car il libère les threads en attente d'une réponse à un appel asynchrone de longue durée.

Oui et non. Le but de l'async est de libérer le thread appelant. Dans les applications d'interface utilisateur, le principal avantage de l'async est la réactivité puisque le thread d'interface utilisateur est libéré. Dans les applications serveur, le principal avantage de l'async est l'évolutivité car le thread de requête est libéré pour gérer d'autres requêtes.

Notre seul « gain » est donc que le fil de discussion de l'appelant peut être libéré pendant qu'un autre fil fait son travail. Appelle toujours la méthode asynchrone pour créer un nouveau thread de travail ?

Non. Au niveau du système d'exploitation, toutes les opérations d'E/S sont asynchrones. Il s'agit d'API synchrones qui bloquent le thread pendant l'exécution des E/S asynchrones sous-jacentes. J'ai récemment écrit ceci dans un article de blog : .

Cela créera un port de fin d'E/S (IOCP) représentant la tâche en cours de traitement en externe et le thread continuera avec d'autres choses. Ensuite, lorsque IOCP notifie que la tâche est terminée, le thread dépendra de l'état IOCP et continuera à exécuter la tâche.

Les ports d'E/S offrent une solution élégante au problème de l'écriture d'applications serveur évolutives qui utilisent le multithreading et les E/S asynchrones.

Je veux dire : n'est-il pas nécessaire de créer une sorte de travailleur pour l'événement ? À un niveau très bas, il doit y avoir une boucle synchrone qui bloque le résultat de la lecture du thread à partir de la base de données.

Même lorsque vous devez réellement attendre un objet du noyau (comme un événement de réinitialisation manuelle), vous pouvez toujours transformer le code synchrone bloquant en code asynchrone et libérer le thread du blocage (mise à jour : scénario réel).

Par exemple, code synchrone :

Void Consume() ( var terminéMre = new ManualResetEvent(false); producteur.StartOperation(completedMre); terminéMre.WaitOne(); // blocage de l'attente Console.WriteLine(producteur.DequeueResult()); )

Analogique asynchrone :

Tâche asynchrone ConsumeAsync() ( var terminéMre = new ManualResetEvent(false); producteur.StartOperation(completedMre); var tcs = new TaskCompletionSource ();

La version asynchrone évolue plus de 64 fois (MAXIMUM_WAIT_OBJECTS), qui est le nombre maximum d'objets du noyau pouvant être agrégés RegisterWaitForSingleObject pour attendre sur un seul thread). Vous pouvez donc appeler Consume() 64 fois en parallèle et cela bloquera 64 threads. Ou vous pouvez appeler ConsumeAsync 64 fois et bloquer un seul thread.



Des questions ?

Signaler une faute de frappe

Texte qui sera envoyé à nos rédacteurs :