go 程(goroutine)是由 go 執行時管理的輕量級執行緒,使用方式:
package main
import (
"fmt"
"time"
)func say(s string)
}func main()
結果:
go routine say world
normal hello
normal hello
go routine say world
normal hello
go routine say world
normal hello
go routine say world
normal hello
通道方式
package main
import (
"fmt"
)func main()
c := make(chan int)
//累加 7+2+8 = 17
go sum(s[:len(s)/2], c)
//累加 -9+4+0 = -5
go sum(s[len(s)/2:], c)
// 從 c 中接收。第乙個引數給x第二個引數給y
// x -5 y 17
x, y := <-c, <-c
fmt.println(x, y, x+y)
}func sum(s int, c chan int)
c <- sum // 將和送入 c
}
結果
-5 17 12
帶緩衝的通道
package main
import (
"fmt"
)func main()
//結果:
fatal error: all goroutines are asleep - deadlock!
goroutine 1 [chan send]:
main.main()
d:/go_workspaces/twh/thread.go:43 +0xa3
package main
import (
"fmt"
)func main()
//結果
12
通道的關閉和範圍
package main
import (
"fmt"
)func fillchannel(n int, c chan int)
close(c)
}func main()
}// 結果
放入x: 0 ,y: 1 ,x+y: 1
放入x: 1 ,y: 1 ,x+y: 2
放入x: 1 ,y: 2 ,x+y: 3
放入x: 2 ,y: 3 ,x+y: 5
放入x: 3 ,y: 5 ,x+y: 8
放入x: 5 ,y: 8 ,x+y: 13
放入x: 8 ,y: 13 ,x+y: 21
放入x: 13 ,y: 21 ,x+y: 34
放入x: 21 ,y: 34 ,x+y: 55
放入x: 34 ,y: 55 ,x+y: 8901
1235
8132134
package main
import (
"fmt"
)func selecttest(channel, quit chan int) }}
func main()
quit <- 0
}()selecttest(channel, quit)
}//結果
0往channel推資料x: 0 ;臨時值y和x+y 1 1
往channel推資料x: 1 ;臨時值y和x+y 1 211
往channel推資料x: 1 ;臨時值y和x+y 2 3
往channel推資料x: 2 ;臨時值y和x+y 3 523
往channel推資料x: 3 ;臨時值y和x+y 5 8
往channel推資料x: 5 ;臨時值y和x+y 8 1358
往channel推資料x: 8 ;臨時值y和x+y 13 21
往channel推資料x: 13 ;臨時值y和x+y 21 34
1321
往channel推資料x: 21 ;臨時值y和x+y 34 55
預設執行器
package main
import (
"fmt"
"time"
)func main() }}
//結果
..100毫秒...100毫秒...100毫秒...100毫秒...500毫秒-boom!!
Go語言併發
協程 本質上是一種使用者態執行緒,不需要作業系統來進行搶占式排程,且在真正的實現重寄存於執行緒中,因此,系統開銷極小,可以有效提高執行緒的任務併發性,從而避免多執行緒的缺點。使用協程的優點是程式設計簡單,結構清晰 缺點是需要語言的支援。協程最大優勢 輕量級 可以輕鬆建立上百萬個而不會導致系統資源衰竭...
Go語言 併發篇
go語言 併發篇 2012 06 06 09 55 by 軒脈刃,當被問到為什麼用go語言,一定不得不提的是go語言的併發程式編寫。在c語言中編寫非常繁瑣複雜的併發程式在go語言中總是顯得如此便捷。go中併發程式依靠的是兩個 goroutine和channel 對於初學者,goroutine直接理解...
Go語言基礎 併發
並行 多件事在同一時刻發生。併發 多件事在同一時間間隔發生。摘自 和 concurrent and parallel programming 上文如果用程式設計師的語言來講,cpu處理器相當於上圖的咖啡機的角色,任務相當於佇列中的人。一定要仔細閱讀此文 這篇文章提到了網路伺服器併發連線數 吐吞量 寬...