Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
檀越@新空间
Coding Tree
提交
dcf302e5
C
Coding Tree
项目概览
檀越@新空间
/
Coding Tree
通知
2
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
C
Coding Tree
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
提交
dcf302e5
编写于
9月 26, 2022
作者:
彭世瑜
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
fix
上级
49dae74e
变更
2
显示空白变更内容
内联
并排
Showing
2 changed file
with
138 addition
and
6 deletion
+138
-6
blog/golang/golang-concurrency.md
blog/golang/golang-concurrency.md
+129
-0
blog/golang/index.md
blog/golang/index.md
+9
-6
未找到文件。
blog/golang/golang-concurrency.md
0 → 100644
浏览文件 @
dcf302e5
# 第二十章 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
```
blog/golang/index.md
浏览文件 @
dcf302e5
...
@@ -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.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录