Skip to content

Commit

Permalink
并发
Browse files Browse the repository at this point in the history
  • Loading branch information
hekuangsheng committed Apr 20, 2022
1 parent 3378f2b commit b4b6e23
Showing 1 changed file with 4 additions and 4 deletions.
8 changes: 4 additions & 4 deletions golang_CSP.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
<!--
* @Author: your name
* @Date: 2022-04-19 10:27:41
* @LastEditTime: 2022-04-20 20:21:17
* @LastEditTime: 2022-04-20 20:28:12
* @LastEditors: Please set LastEditors
* @Description: 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%A
* @FilePath: /golang-base/golang_CSP.md
Expand Down Expand Up @@ -105,6 +105,6 @@ atomic包提供了底层的原子级内存操作,对于同步算法的实现
一个任务会有很多个协程协作完成,一次 HTTP 请求也会触发很多个协程的启动,而这些协程有可能会启动更多的子协程,并且无法预知有多少层协程、每一层有多少个协程
Context 就是用来简化解决这些问题的,并且是并发安全的。Context 是一个接口,它具备手动、定时、超时发出取消信号、传值等功能,主要用于控制多个协程之间的协作,尤其是取消操作。一旦取消指令下达,那么被 Context 跟踪的这些协程都会收到取消信号,就可以做清理和退出操作

## race
* [go run -race XXX.go]()
Go语言中单元测试的时候加上-race参数,可以实现并发测试
* [race](https://github.com/singgel/golang-base/blob/main/sync_race/main.go)
Go语言中单元测试的时候加上-race参数,可以实现并发测试,但 race-enabled 程序耗费的 CPU 和内存通常是正常程序的十倍,在真实环境下一直启用竞态检测是非常不切合实际的
[issues/3970](https://github.com/golang/go/issues/3970)这个官方源码案例告诉我们:它不会发出假的提示,认真严肃地对待它的每条警示非常必要。但它并非万能,还是需要以你对并发特性的正确理解为前提,才能真正地发挥出它的价值

0 comments on commit b4b6e23

Please sign in to comment.