1. 临界资源 package main import ( "fmt" "time" ) func main() { /* 临界资源: */ a := 1 go func() { a = 2 fmt.Println("goroutine中。。",a) }() a = 3 time.Sleep(1) ...
分类:
其他好文 时间:
2020-02-03 09:57:08
阅读次数:
89
通道可以被认为是Goroutines通信的管道。类似于管道中的水从一端到另一端的流动,数据可以从一端发送到另一端,通过通道接收。 在前面讲Go语言的并发时候,我们就说过,当多个Goroutine想实现共享数据的时候,虽然也提供了传统的同步机制,但是Go语言强烈建议的是使用Channel通道来实现Go ...
分类:
其他好文 时间:
2020-02-03 09:48:45
阅读次数:
84
在kubernetes的scheduler调度器的设计中为用户预留了两种扩展机制SchdulerExtender与Framework,本文主要浅谈一下SchdulerExtender的实现, 因为还有一篇Framework, 所以本文的k8s代码切到1.18版本 1. 设计思路 1.1 实现机制 S ...
分类:
Web程序 时间:
2020-02-01 22:54:49
阅读次数:
169
1. 计算阶乘 package main import ( "fmt" _ "time" "sync" ) //需求:现在要计算 1-200 的各个数的阶乘,并且把各个数的阶乘放入到map中。 //最后显示出来。要求使用goroutine完成 //思路 //1. 编写一个函数,来计算各个数的阶乘,并 ...
分类:
其他好文 时间:
2020-01-27 09:25:24
阅读次数:
108
1. 案例1 package main import ( "fmt" _ "time" ) //write Data func writeData(intChan chan int) { for i := 1; i <= 50; i++ { //放入数据 intChan <- i // fmt.Pr ...
分类:
其他好文 时间:
2020-01-27 09:17:19
阅读次数:
64
"概要" "goroutine 的控制" "取消控制" "超时控制" "goroutine 之间的传值" "总结" 概要 golang 的提供的 channel 机制是基于 CSP(Communicating Sequencial Processes)模型的并发模式. 通过 channel, 可以很 ...
分类:
其他好文 时间:
2020-01-26 19:20:54
阅读次数:
72
什么是context context是golang在1.7版本的时候引入的标准库,从名字也知道是"上下文",不过准确的说应该是goroutine的上下文,它包含了goroutine的运行状态、环境等信息。 context主要是用来在goroutine之间传递上下文信息,包括:取消信号、超时时间、截止 ...
分类:
其他好文 时间:
2020-01-24 15:46:52
阅读次数:
63
# 一、执行流程 首先我们构建一个简单http server: ```go package main import ( "log" "net/http" ) func main() { http.HandleFunc("/", func(w http.ResponseWriter, r *http. ...
分类:
Web程序 时间:
2020-01-22 12:26:55
阅读次数:
109
关于 pool 的由来可以参考:github issues文章sync.Pool 的作用及为什么要用到它Rob Pike 扩展了sync.pool 类型的文档,并且将其目的描述得更清楚:Pool设计用意是在全局变量里维护的释放链表,尤其是被多个 goroutine 同时访问的全局变量。使用Pool代... ...
分类:
其他好文 时间:
2020-01-21 23:16:58
阅读次数:
90