41 votes

En Go, est-il judicieux d'écrire du code non bloquant ?

venant du point de vue node.js, où tout le code est non bloquant.

En Go, le non-blocage est facilement réalisé en utilisant des canaux.

si l'on écrivait un serveur de type node.js en go, est-il judicieux de le rendre non bloquant ? par exemple, faire en sorte qu'une fonction de connexion à une base de données renvoie un canal, par opposition au blocage en attendant que la connexion se produise.

pour moi, cela semble la bonne approche

mais ...

28voto

Evan Shaw Points 7957

Écrire des fonctions de blocage. Le langage vous permet de transformer facilement un appel synchrone en un appel asynchrone.

Si vous souhaitez appeler une fonction de manière asynchrone, utilisez une instruction go. Quelque chose comme ça:

 c := make(chan bool)
go func() {
    blockingFunction()
    c <- true
}()

// do some other stuff here while the blocking function runs

// wait for the blocking function to finish if it hasn't already
<-c

7voto

uriel Points 851

Les interfaces bloquantes sont toujours plus simples et meilleures que les non bloquantes. La beauté de Go est qu'il vous permet d'écrire du code concurrent (et parallèle) dans un style de blocage simple et facile à raisonner.

La mode pour la programmation non bloquante est entièrement due à des lacunes dans les langages que les gens utilisent (en particulier JavaScript), non pas parce que la programmation non bloquante est intrinsèquement meilleure.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X