Tag: 协程
24 total results found
Laravel Octane:基于 Swoole/RoadRunner 驱动的高性能 Laravel 解决方案
今天,Taylor Otwell 让 Laracon Online 2021 的与会者第一次看到了 Laravel Octane —...
基于 Go 协程实现图片马赛克应用(下):并发重构
声明:本教程代码整理自《Go Web Programming》一书并发编程部分。 接下来,我们引入协程来提升图片马赛克应用的性...
常见的并发模式实现(三):通过无缓冲通道创建协程池
上篇教程学院君给大家演示了如何通过缓冲通道实现共享资源池,今天,我们来看另一个并发模式的 Go 语言实现 —— 通过无缓冲通道实现协...
常见的并发模式实现(二):通过缓冲通道实现共享资源池
今天这篇教程我们继续演示常见并发模式的 Go 语言实现 —— 通过缓冲通道(channel)实现共享资源池。 注:如果你不了解...
常见的并发模式实现(一):调度后台处理任务的作业程序
关于 Go 语言并发编程基本概念和 Goroutine、Channel 以及锁机制的使用,学院君在 Go 入门教程并发编程章节已经详...
Gin 使用示例(十八):平滑重启或关闭服务器
可以使用 fvbock/endless 来替换默认的 ListenAndServe 方法,参考 https://github.com...
Gin 使用示例(十三):中间件中使用协程的注意事项
在中间件或处理器中开启新的协程时,不应该在其中使用原生的上下文对象,而应该使用它的只读副本: func main() { r...
通过 context 包提供的函数实现多协程之间的协作
上篇教程学院君介绍了如何通过 sync.WaitGroup 类型优化通道对多协程协调的处理,但是现在有一个问题,就是我们在启动子协程...
sync 包(四):sync.WaitGroup 和 sync.Once
在介绍通道的时候,如果启用了多个子协程,我们是这样实现主协程等待子协程执行完毕并退出的:声明一个和子协程数量一致的通道数组,然后为每...
sync 包(三):原子操作
中断与原子操作 我们在前两篇教程中讨论了互斥锁、读写锁以及基于它们的条件变量。互斥锁是一个同步工具,它可以保证每一时刻进入临界区的...
sync 包(二):条件变量 sync.Cond
sync 包还提供了一个条件变量类型 sync.Cond,它可以和互斥锁或读写锁(以下统称互斥锁)组合使用,用来协调想要访问共享资源...
利用多核 CPU 实现并行计算
开始之前,我们先澄清两个概念,「多核」指的是有效利用 CPU 的多核提高程序执行效率,「并行」和「并发」一字之差,但其实是两个完全不...
通道类型篇(一):基本语法和缓冲通道
在上篇教程中,学院君给大家演示了如何通过通道(channel)传递消息实现 Go 协程间的通信, 接下来,我们将通过几篇教程的篇幅来...
Go 协程通信实现(下)—— 通过 channel 进行消息传递
上篇教程学院君演示了如何通过共享内存实现协程通信,不过这种方式太过繁琐,且维护成本高,Go 语言推荐使用消息传递实现并发通信,这种消...
Go 协程通信实现(上)—— 共享内存
在上篇教程中,我们已经演示了如何通过 goroutine 基于协程在 Go 语言中实现并发编程,从语法结构来说,Go 语言的协程是非...