让go语言健壮并发
代码乐趣
一个对代码有痴爱的人
展开
-
go web 编程实战派 读书笔记
package mainimport ( "fmt" "io/ioutil" "net/http" "text/template")func Welcome() string { return "Welcome"}func Doing(name string) string { return name + ", Learing Go web template"}func SayHello(w http.ResponseWriter, r *http.Request) {.原创 2021-07-30 17:41:28 · 596 阅读 · 0 评论 -
并发聊天服务器
今天终于调通了一个并发版的聊天服务器,这个服务器主要是管理用户,通知用户上线或者下线,然后消息转发,广播到客户端,有点像聊天室那种,非常有趣。我先用函数编程把程序调通了,然后又用面向对象的方法重写了一般,感觉业务逻辑更清晰一些。// goserver.gopackage mainimport ( "fmt" "net" "strings")type client struct { C chan string addr string}var onlineMap ma原创 2021-07-19 15:37:22 · 118 阅读 · 0 评论 -
让go语言健壮地并发(三)
package mainimport ( "fmt" "runtime")func producer(ch chan int, quit chan bool) { i := 1 for { select { case <-quit: close(ch) fmt.Println("quit") return default: ch <- i i++ } }}func init() { runtime.GOMAXPROCS(4.原创 2021-07-13 11:27:38 · 225 阅读 · 0 评论 -
让go语言健壮并发(四)
package mainimport ( "fmt")type Chan struct { isquit bool isclosed bool ch chan int quit chan bool}func main() { ch := &Chan{isquit: false, isclosed: false, ch: make(chan int), quit: make(chan bool)} go func() { // i := 0.原创 2021-07-11 22:29:01 · 90 阅读 · 0 评论 -
让go语言健壮并发(一)
从一个简单的案例入手,不断发现问题,解决问题,由浅入深,循序渐进,轻松学习go语言。我们先写一个简单的并发,子协程作为生产者生产数据,主线程作为消费者接收数据。// gochan_1.gopackage mainimport ( "fmt")func producer(ch chan int) { for i := 0; i < 5; i++ { ch <- i } close(ch)}func main() { ch := make(chan int)原创 2021-07-10 20:07:42 · 108 阅读 · 0 评论