Golang
goroutine
我自己理解goroutine 就很类似其他语言的thread[备注1],只是特别的地方是go 用 goroutine很简易的方式去让开发者 实现多执行绪[备注2]程序
来点范例
package main
import (
"fmt"
"time"
)
func say(s string) {
for i := 0; i < 5; i++ {
time.Sleep(100 * time.Millisecond)
fmt.Println(s)
}
}
func main() {
go say("a")
//say("a")
say("b")
}
这对於比较常写PHP的我,真的实在太惊人了!!!!!
Channel
Goroutine的沟通主要可以透过channel、全域变数进行操作。
package main
import (
"fmt"
"time"
)
func say(s string, val chan int) {
for i := 0; i < 2; i++ {
time.Sleep(100 * time.Millisecond)
fmt.Printf("say %s \n" ,s)
}
val <- 1 //注入资料1
}
func say2(s string, val chan int) {
for i := 0; i < 2; i++ {
time.Sleep(100 * time.Millisecond)
fmt.Printf("say2 %s \n" ,s)
}
val <- 2 //注入资料1
}
func main() {
val := make(chan int)
go say("a", val )
go say2("a", val )
x := <-val // receive from c
fmt.Println(x)
}
直接来改看看,虽然这支是没啥意义的程序,但可以看得出来是共享x,然後多跑几次就会发现谁抢赢谁抢输了
备注:
参考资料
https://zh.wikipedia.org/zh-tw/%E7%BA%BF%E7%A8%8B
<<: 序章:最幸福的事,莫过於当你看到code变成一幅幅美丽的画
>>: Day08. 後疫情的新常态,运用Blue Prism「超前布署」好运自创-BP从Excel新建一个工作表
CSS box model 盒子模型也称为区块模型,主要是将传统的HTML区块概念再进一步的规范。我...
可以 ASP.NET Core 网站部署的环境相当多,包含 IIS, Nginx, App serv...
前言 昨天的文章讲完 Deployment 以及 ReplicaSet 後相信大家应该对於如何产生更...
《30天带你上完 Google Data Analytics Certificate 课程》系列将...
如果说HTML是网页开发的第一堂课,CSS差不多就会再第二堂课出现了,好消息是,只要用第二堂学到的语...