并发
已收录文章:92篇
-
使用通道接收数据 在上一篇文章中介绍了通道以及使用通道发送数据,本篇接着了解通道的基本内容,如何使用通道接收数据; 通道的接收同样使用"<-"操作符; 使用通道接收数据的221 收藏
-
问题内容 Golangpackage main import "fmt" var quit chan int var glo int func test() { fmt.Println(glo) } func main() { glo = 0 n := 10000 quit = make(chan int, n) go test() for { quit <- 1 glo++ } }217 收藏
-
C#、Lua、Python 语言都支持 coroutine 特性。coroutine 与 goroutine 在名字上类似,都可以将函数或者语句在独立的环境中运行,但是它们之间有两点不同:goroutine 可能发生并行执行;但 coroutine 始终顺211 收藏
-
背景说明 假设有一个分布式文件系统,现需要从该系统中并发下载一部分文件到本地机器。 已知该文件系统的部分节点ip, 以及需要下载的文件fileID列表,并能通过这些信息来拼接下载地址。211 收藏
-
引言 在Go语言中,我们通常会用到panic和recover来抛出错误和捕获错误,这一对操作在单协程环境下我们正常用就好了,并不会踩到什么坑。但是在多协程并发环境下,我们常常会碰到以下两个210 收藏
-
Golang · Go教程 | 2天前 | 并发 · WaitGroup · go · worker pool · 服务停机 · Go channel WaitGroup 优雅停机 worker pool 任务排空从一次发布后异步任务少处理的故障出发,拆解 Go worker pool 的关闭顺序:先停止接收、再关闭任务输入、让 worker 排空并由 WaitGroup 收尾,同时说明超时退出与任务持久化的边界。207 收藏
-
在前面对 channel 的介绍中,我们完全没有提到错误处理的问题,而这个问题显然是不能被忽略的。在并发编程的通信过程中,最需要处理的就是超时问题,即向 channel 写数据时发现 channel 已满,205 收藏
-
1.Redis是基于内存的,内存的读写速度非常快; 2.Redis是单线程的,省去了很多上下文切换线程的时间; 3.Redis使用多路复用技术,可以处理并发的连接。非阻塞IO 内部实现采用epoll,采用了epoll+203 收藏
-
Golang · Go教程 | 5天前 | 并发 · HTTP · 性能优化 · 故障排查 · Go教程 · Go Goroutine 连接复用 pprof http.Client close Response.BodyGo 服务里调用 http.Client 后,Response.Body 没有在所有路径关闭,连接会被持续占用,pprof 里常能看到 net/http 相关 goroutine 增长。用 defer resp.Body.Close()、完整处理响应体、复用 Client,并通过压测与连接指标复查,可以把这类问题收住。201 收藏
-
零、并发问题 假设,有一个线上作业系统,当阅卷时,会从数据库取出第一个未评阅的作业。评阅完成后,会把作业状态改为“已评阅”:这样没什么问题。 如果是两个人同时评阅呢?如果B获200 收藏
-
优雅的并发编程范式,完善的并发支持,出色的并发性能是 Go语言区别于其他语言的一大特色。使用 Go语言开发服务器程序时,就需要对它的并发机制有深入的了解。并发基础回到在 Windows 和 Li197 收藏
-
在编写 Socket 网络程序时,需要提前准备一个线程池为每一个 Socket 的收发包分配一个线程。开发人员需要在线程数量和 CPU 数量间建立一个对应关系,以保证每个任务能及时地被分配到 CPU 上进193 收藏