Maison  >  Article  >  développement back-end  >  qu'est-ce que la chaîne Golang

qu'est-ce que la chaîne Golang

(*-*)浩
(*-*)浩original
2019-12-03 09:29:022754parcourir

qu'est-ce que la chaîne Golang

Le canal en langage Go est le mécanisme clé pour obtenir une communication sans verrouillage entre les goroutines. Il rend l'écriture de programmes simultanés multithread simple, flexible et accessible.

Le canal est un type de base dans Go. Vous pouvez le considérer comme un canal, à travers lequel des unités principales concurrentes peuvent envoyer ou recevoir des données pour la communication. (Apprentissage recommandé : go)

Son opérateur est la flèche <-.

ch <- v    // 发送值v到Channel ch中
v := <-ch  // 从Channel ch中接收数据,并将数据赋值给v

structure des chaînes

type hchan struct {
   qcount   uint           // total data in the queue 队列中存在的个数
   dataqsiz uint           // size of the circular queue buffer大小 实现看起来是个循环数组
   buf      unsafe.Pointer // points to an array of dataqsiz elements 数组指针
   elemsize uint16       //channel类型的大小
   closed   uint32      //channel是否关闭
   elemtype *_type // element type //channel 类型
   sendx    uint   // send index  //发送index
   recvx    uint   // receive index //接收index
   recvq    waitq  // list of recv waiters //接收链表 即读channel的goroutine
   sendq    waitq  // list of send waiters //发送链表 即写channel的goroutine

   // lock protects all fields in hchan, as well as several
   // fields in sudogs blocked on this channel.
   //
   // Do not change another G&#39;s status while holding this lock
   // (in particular, do not ready a G), as this can deadlock
   // with stack shrinking.
   lock mutex
}

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Article précédent:Qu'est-ce que Golang CgoArticle suivant:Qu'est-ce que Golang Cgo