Maison > Article > développement back-end > L'exemple server2 dans le livre du langage de programmation Go est-il erroné ?
Je lis "Go Programming Language Book". Dans le chapitre 1, Exemple de serveur 2 : Book Code, les mutex sont utilisés pour éviter les conditions de concurrence. Cependant, j'ai copié le code et essayé de l'exécuter, mais les résultats étaient incohérents. Le code de l'exemple est-il erroné ?
Voici comment j'utilise le code :
server.go
package server import ( "fmt" "log" "net/http" "sync" ) const ( port string = ":8000" ) var count int var mu sync.mutex func run() { http.handlefunc("/", handler) http.handlefunc("/count", counter) fmt.printf("server is listening on port: %s\n", port) log.fatal(http.listenandserve(port, nil)) } func handler(w http.responsewriter, r *http.request) { mu.lock() count++ mu.unlock() fmt.fprintf(w, "url path = %q\n", r.url.path) } func counter(w http.responsewriter, r *http.request) { mu.lock() fmt.fprintf(w, "count = %d\n", count) mu.unlock() }
main.go
package main import "book/server" func main() { server.Run() }
Quand je lance : lancez main.go et accédez à deux pages localhost:8000 et localhost:8000/count
Je m'attendais à ce que le nombre n'augmente que lorsque je visite la page / au lieu de la page /count, et qu'il augmente en fonction du nombre de fois que j'actualise.
En effet, lorsque vous testez une page Web avec un navigateur, la plupart du temps, le navigateur envoie également une requête à http://localhost:8000/favicon.ico
. Voir capture d'écran ci-dessous :
/favicon.ico
没有专用的处理程序,它与 /
匹配,因此将由 server.handler
Traitement.
Il est recommandé d'utiliser d'autres outils pour tester de telles démos. Par exemple, curl
:
$ curl 'http://localhost:8000/' $ curl 'http://localhost:8000/count'
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!