提交 dcf302e5 编写于 作者: 彭世瑜's avatar 彭世瑜

fix

上级 49dae74e
# 第二十章 golang 并发编程
## golang 并发编程之协程
共语言中的并发是`函数`相互独立运行的能力。goroutines 是并发运行的函数
创建协程
```go
go task()
```
示例 1
```go
package main
import (
"fmt"
"time"
)
func showMessage(message string) {
for i := 0; i < 5; i++ {
fmt.Println(message)
time.Sleep(time.Millisecond * 100)
}
}
func main() {
showMessage("Tom")
showMessage("Jack")
}
```
输出
```
Tom
Tom
Tom
Tom
Tom
Jack
Jack
Jack
Jack
Jack
```
```go
func main() {
go showMessage("Tom")
showMessage("Jack")
}
```
输出
```go
Jack
Tom
Tom
Jack
Jack
Tom
Tom
Jack
Jack
Tom
```
示例 2
```go
package main
import (
"fmt"
"io/ioutil"
"log"
"net/http"
"time"
)
func responseSize(url string) {
fmt.Println("step1: ", url)
response, err := http.Get(url)
if err != nil {
log.Fatal(err)
}
fmt.Println("step2: ", url)
defer response.Body.Close()
fmt.Println("step3: ", url)
body, err := ioutil.ReadAll(response.Body)
if err != nil {
log.Fatal(err)
}
fmt.Println("step4: ", len(body))
}
func main() {
go responseSize("https://www.baidu.com/")
go responseSize("https://www.jd.com/")
go responseSize("https://www.taobao.com/")
time.Sleep(time.Second * 10)
}
```
输出
```
step1: https://www.baidu.com/
step1: https://www.jd.com/
step1: https://www.taobao.com/
step2: https://www.jd.com/
step3: https://www.jd.com/
step4: 160260
step2: https://www.baidu.com/
step3: https://www.baidu.com/
step4: 227
step2: https://www.taobao.com/
step3: https://www.taobao.com/
step4: 87347
```
...@@ -16,15 +16,15 @@ ...@@ -16,15 +16,15 @@
[第四章 Golang 项目管理](/blog/golang/golang-project.md) [第四章 Golang 项目管理](/blog/golang/golang-project.md)
[第五章 Golang标识符、关键字、命名规则](blog/golang/golang-identifier.md) [第五章 Golang标识符、关键字、命名规则](/blog/golang/golang-identifier.md)
[第六章 Golang变量](blog/golang/golang-variable.md) [第六章 Golang变量](/blog/golang/golang-variable.md)
[第七章 Golang 常量](blog/golang/golang-constant.md) [第七章 Golang 常量](/blog/golang/golang-constant.md)
[第八章 Golang 数据类型](blog/golang/golang-type.md) [第八章 Golang 数据类型](/blog/golang/golang-type.md)
[第九章 Golang 格式化输出](blog/golang/golang-format.md) [第九章 Golang 格式化输出](/blog/golang/golang-format.md)
[第十章 Golang 运算符](/blog/golang/golang-operator.md) [第十章 Golang 运算符](/blog/golang/golang-operator.md)
...@@ -46,7 +46,10 @@ ...@@ -46,7 +46,10 @@
[第十九章 Golang包 package](/blog/golang/golang-package.md) [第十九章 Golang包 package](/blog/golang/golang-package.md)
[第二十章 golang 并发编程](/blog/golang/golang-concurrency.md)
https://www.bilibili.com/video/BV1ME411Y71o?p=27&spm_id_from=pageDriver&vd_source=efbb4dc944fa761b6e016ce2ca5933da https://www.bilibili.com/video/BV1ME411Y71o?p=27&spm_id_from=pageDriver&vd_source=efbb4dc944fa761b6e016ce2ca5933da
https://www.bilibili.com/video/BV1zR4y1t7Wj?p=67&spm_id_from=pageDriver&vd_source=efbb4dc944fa761b6e016ce2ca5933da
\ No newline at end of file https://www.bilibili.com/video/BV1zR4y1t7Wj/?p=68&spm_id_from=pageDriver&vd_source=efbb4dc944fa761b6e016ce2ca5933da
\ No newline at end of file
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册