


Comportement de la concurrence du langage GO sans tamponner les canaux: pourquoi y a-t-il deux possibilités d'exécution des résultats?
Apr 02, 2025 am 10:24 AMExplication détaillée du comportement simultané et des caractéristiques non bloquantes des canaux de langue GO
Cet article explore les résultats en cours d'exécution d'un morceau de code de langue GO lors de l'utilisation de canaux non frappés et explique le principe de programmation simultanée derrière. Le code utilise les caractéristiques des canaux de langue GO, mais montre différents comportements dans différentes situations, ce qui déclenche des discussions sur des questions telles que le blocage des canaux et le temps de démarrage de Coroutine.
Le code est le suivant:
package principal Importer "FMT" func main () { chanint: = make (chan int) Déférer Close (Chanint) aller func () { pour { res, ok: = <p> Ce code crée un canal non tamponné <code>chanInt</code> et démarre un Goroutine pour recevoir des données du canal et l'imprimer. Le goroutine principal envoie 1 et 10 au canal. Cependant, il existe deux possibilités d'exécution des résultats: imprimer "1 true" et "10 true", ou simplement imprimer "1 true". Cela soulève les questions suivantes:</p><ol><li> <strong>Il y a deux raisons pour la sortie du canal non frappé:</strong> </li></ol><p> Les caractéristiques des canaux non frappés sont: l'opération d'envoi est bloquée jusqu'à ce qu'un goroutine re?oive des données; L'opération de réception est également bloquée jusqu'à ce qu'un goroutine envoie des données. Le goroutine principal envoie 1 et 10 tour à tour. Les sous-goroutines sont re?us et imprimés. Si l'enfant Goroutine re?oit 1 assez rapidement, l'impression "1 vrai" est terminée avant que le Goroutine principal n'envoie 10, alors recevant 10 et imprimant "10 true". Mais si l'enfant goroutine re?oit 1 plus lent, l'enfant goroutine ne peut avoir le temps de recevoir et d'imprimer 1 avant que le goroutine principal n'envoie 10 et se termine. En effet, la goroutine principale se termine la fermeture du canal, et l'enfant goroutine re?oit un signal du canal à fermer ( <code>ok</code> est <code>false</code> ), arrêtant ainsi l'opération.</p><ol start="2"><li> <strong>Raisons pour aucune sortie avec des canaux tamponnés ( <code>chanInt := make(chan int, 2)</code> ):</strong> </li></ol><p> Après avoir changé le canal en un canal tamponné avec Capacité 2, l'envoi du fonctionnement du goroutine principal ne bloquera pas car il a suffisamment d'espace pour accueillir deux valeurs. Le goroutine principal se termine après avoir envoyé 1 et 10, tandis que l'enfant goroutine n'a peut-être pas commencé ou commencé à recevoir des données. En effet, la coroutine prend du temps à commencer. Si le goroutine principal se termine beaucoup plus rapidement que l'enfant Goroutine, l'enfant goroutine ne pourra pas recevoir de données du canal fermé, ce qui n'a pas donné de sortie.</p><p> Grace à l'analyse, nous comprenons que dans la programmation simultanée du langage GO, le temps de démarrage de la coroutine, les caractéristiques de blocage / non bloquant les canaux et le temps final principal du goroutine déterminent conjointement le résultat de sortie final. L'interaction de ces facteurs conduit à l'incertitude dans le résultat. Pour s'assurer que le sous-goroutine peut gérer toutes les données envoyées, un mécanisme d'attente doit être ajouté après l'envoi des données, tels que la synchronisation des Goroutines à l'aide de <code>WaitGroup</code> .</p>
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Outils d'IA chauds

Undress AI Tool
Images de déshabillage gratuites

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Clothoff.io
Dissolvant de vêtements AI

Video Face Swap
échangez les visages dans n'importe quelle vidéo sans effort grace à notre outil d'échange de visage AI entièrement gratuit?!

Article chaud

Outils chauds

Bloc-notes++7.3.1
éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Sujets chauds

Le modèle dans le champ de la cha?ne publique montre une tendance de "un super, beaucoup de forts et une centaine de fleurs fleurissant". Ethereum mène toujours avec ses douves écologiques, tandis que Solana, Avalanche et d'autres sont difficiles à affronter les performances. Pendant ce temps, Polkadot, Cosmos, qui se concentre sur l'interopérabilité, et ChainLink, qui est une infrastructure critique, forment une image future de plusieurs cha?nes coexistant. Pour les utilisateurs et les développeurs, le choix de la plate-forme n'est plus un seul choix, mais nécessite un compromis entre les performances, le co?t, la sécurité et la maturité écologique basée sur des besoins spécifiques.

La mise à niveau de Fork Hard Fork de Cardano a réussi à transformer Cardano d'un réseau de transfert de valeur vers une plate-forme de contrat intelligent entièrement fonctionnel en introduisant la plate-forme de contrat intelligent Plutus. 1. Plutus est basé sur le langage Haskell, avec des fonctionnalités puissantes, une sécurité améliorée et un modèle de co?t prévisible; 2. Après la mise à niveau, le déploiement DAPPS est accéléré, la communauté des développeurs est élargie et les écosystèmes Defi et NFT se développent rapidement; 3. En 2025, l'écosystème de Cardano sera plus mature et diversifié. Combinée à l'amélioration de l'évolutivité à l'ère Basho, à l'amélioration de l'interopérabilité transversale, à l'évolution de la gouvernance décentralisée à l'ère Voltaire et à la promotion de l'adoption générale par les applications au niveau de l'entreprise, Cardano a

à une époque où la vague de l'économie numérique a balayé le monde, les crypto-monnaies sont devenues l'attention de tous les horizons avec leur décentralisation et leur transparence uniques. De la première expérience de niche de geek au paysage financier actuel avec une valeur marchande de milliards de milliards, l'évolution des crypto-monnaies est incroyable. Il apporte non seulement des innovations dans les technologies sous-jacentes, mais donne également naissance à d'innombrables applications innovantes, qui affectent profondément tous les aspects de la finance, de la technologie et même de la gouvernance sociale.

Les 20 principaux actifs de cryptographie les plus prometteurs en 2025 comprennent BTC, ETH, SOL, etc., couvrant principalement plusieurs pistes telles que les cha?nes publiques, la couche 2, l'IA, le défi et les jeux. 1.BTC continue de diriger le marché avec ses propriétés numériques en métal jaune et sa vulgarisation des ETF; 2.eth consolide l'écosystème en raison de son statut et de sa mise à niveau des plates-formes de contrat intelligentes; 3.Sol se démarque avec des cha?nes publiques et des communautés de développeurs hautes performances; 4.Link est le leader d'Oracle Connectation de données réelles; 5.RNDR construit les besoins décentralisés du service de réseau GPU AI; 6.IMX se concentre sur les jeux Web3 pour fournir un environnement sans gaz zéro; 7.Reb mène avec la technologie de la couche 2 mature et l'énorme écosystème Defi; 8.Matic est devenu la couche de valeur d'Ethereum à travers l'évolution multi-cha?ne

Récemment, la discussion dans le domaine des actifs numériques est restée chaude. Dogecoin Doge, comme l'une des objectifs les plus populaires, est devenue une question que beaucoup de gens ont exploré. Où est-ce que cela "se stabilise"? Quelle est la relation avec la plateforme de trading actuelle, Binance? Pour répondre à ces questions, nous devons effectuer une analyse approfondie des deux dimensions de la logique technique sous-jacente des actifs numériques et de l'écologie de la plate-forme, plut?t que de rester en apparence.

La différence de base entre l'USDC, le DAI et le TUSD réside dans le mécanisme d'émission, les actifs collatéraux et les caractéristiques du risque. 1. L'USDC est un stablecoin centralisé émis par Circle et est garanti par des obligations de trésorerie en espèces et à court terme. Ses avantages sont la conformité et les liquidités transparentes, fortes et une stabilité élevée, mais il existe un risque d'examen centralisé et de défaillance ponctuelle; 2. Dai est une stablecoin décentralisée, générée par le protocole Makerdao, et la garantie est un atout crypto. Il présente les avantages de l'anti-censure, de la transparence sur la cha?ne et sans autorisation, mais il fait également face à des risques systémiques, à la dépendance à l'égard des actifs centralisés et des problèmes de complexité; 3. TUSD est un stablecoin centralisé, mettant l'accent sur la preuve de réserve en ligne en temps réel, fournissant une vérification de transparence de fréquence plus élevée, mais a une petite part de marché et une faible liquidité. Les trois sont des types de garantie et une décentralisation

La question de savoir si les gens ordinaires peuvent gagner de l'argent en participant au marché des crypto-monnaies dépend de plusieurs facteurs, et les opportunités et les risques coexistent. Cet article présente des projets traditionnels tels que Bitcoin, Ethereum, Solana, BNB et Cardano. Les points forts sont le consensus du marché, l'écosystème des contrats intelligents, les cha?nes publiques haute performance, le support des ressources de plate-forme et la rigueur technique; Les opportunités potentielles comprennent un potentiel de croissance élevé, une innovation technologique et un faible seuil d'entrée, mais les risques sont également importants, tels que les fluctuations importantes des prix, la complexité technique, les problèmes de sécurité et l'incertitude réglementaire; Pour les débutants, il est recommandé de suivre les étapes suivantes: 1. Recherche indépendante (Dyor); 2. Sélectionnez une plate-forme de trading fiable; 3. Vérification complète de l'identité; 4. Investissement de petit lot; 5. Apprenez à garder les actifs en toute sécurité. Dans l'ensemble, le marché des crypto-monnaies a un potentiel, mais il doit être traité avec prudence

DAI convient aux utilisateurs qui attachent l'importance du concept de décentralisation, participent activement à l'écosystème Defi, ont besoin de liquidités de réduction des actifs et poursuivre la transparence et l'autonomie des actifs. 1. Les partisans du concept de décentralisation font confiance aux contrats intelligents et à la gouvernance communautaire; 2. Les utilisateurs Defi peuvent être utilisés pour l'extraction de prêts, de promesses et de liquidités; 3. Les utilisateurs transversaux peuvent réaliser un transfert flexible des actifs multi-cha?nes; 4. Les participants à la gouvernance peuvent influencer les décisions du système par le vote. Ses principaux scénarios comprennent les prêts décentralisés, la couverture des actifs, l'exploitation des liquidités, les paiements transfrontaliers et la gouvernance communautaire. Dans le même temps, il est nécessaire de prêter attention aux risques système, aux fluctuations hypothécaires et aux problèmes de seuil technique.
