J'écris un programme qui fonctionne avec des matrices en parallèle.Type d'élément de canal trop grand Golang
Mes matrices sont créées en utilisant une constante n
.
const n = 10
Les canaux sont créés avec le code suivant:
a := make(chan [n][n]int)
Cela fonctionne très bien pour quoi que ce soit sous une valeur d'environ 12
pour n
mais rien de plus grand et l'erreur suivante est donnée:
channel element type too large (>64kB)
En regardant des tutoriels, etc, et il semble que les canaux tamponnés peuvent être le moyen de résoudre ce problème, mais j'ai essayé de le faire avec le code suivant et la même erreur a été donnée: correctement
a := make(chan [n][n]int, 1000)
Suis-je utiliser des canaux tamponne ou sont-ils pas la façon de résoudre ce problème? Tous les conseils sur la façon dont je peux aller de l'avant avec cela grandement apprécié.
EDIT: Suite à la réponse donnée et aux commentaires, j'essaie maintenant de créer une matrice globale qui est vide et dans laquelle les routines peuvent écrire. Je ne suis pas sûr comment il pourrait être déclaré globalement et ai essayé le dessus pour résoudre ceci. A-t-il besoin d'être initialisé globalement? Tout ce que j'ai l'air d'essayer donne des erreurs.
Salut, merci pour la réponse, cela aurait-il un sens pour moi de créer une structure appelée matrice et de l'utiliser plutôt que [n] [n] int à chaque fois? – benjano
@benjano Cela ne changerait rien, la taille d'un type struct ne peut pas être inférieure à la somme de la taille de tous ses types de champs. – icza
Si je voulais effectuer des calculs sur les matrices en parallèle, aurais-je besoin d'une variable globale qui contienne une matrice vierge de la même taille qui peut ensuite être sauvegardée? – benjano