Tag: 并发编程
22 total results found
基于 Redis 消息队列实现 Laravel 文件存储的异步处理
引子 本来准备给 Redis 实战入门篇做个收尾了,不过想起来 Laravel 进阶组件部分还剩下文件存储、邮件和通知这几个功能没...
基于 Redis 实现分布式锁及其在 Laravel 底层的实现源码
分布式锁的概念 不同于 Java、Golang 这些语言,PHP 本身并不支持并发编程,因为对于 PHP 的主战场 Web 应用而...
基于 Go 协程实现图片马赛克应用(下):并发重构
声明:本教程代码整理自《Go Web Programming》一书并发编程部分。 接下来,我们引入协程来提升图片马赛克应用的性...
基于 Go 协程实现图片马赛克应用(上):同步版本
注:本教程代码整理自《Go Web Programming》一书并发编程部分。 介绍完 Go 并发编程基础和常见并发模式的实现...
常见的并发模式实现(三):通过无缓冲通道创建协程池
上篇教程学院君给大家演示了如何通过缓冲通道实现共享资源池,今天,我们来看另一个并发模式的 Go 语言实现 —— 通过无缓冲通道实现协...
常见的并发模式实现(二):通过缓冲通道实现共享资源池
今天这篇教程我们继续演示常见并发模式的 Go 语言实现 —— 通过缓冲通道(channel)实现共享资源池。 注:如果你不了解...
常见的并发模式实现(一):调度后台处理任务的作业程序
关于 Go 语言并发编程基本概念和 Goroutine、Channel 以及锁机制的使用,学院君在 Go 入门教程并发编程章节已经详...
sync 包(五):临时对象池 sync.Pool
前面我们已经陆续介绍了 sync 包提供的各种同步工具,比如互斥锁、条件变量、原子操作、多协程协作等,今天我们来看另外一种工具。 ...
通过 context 包提供的函数实现多协程之间的协作
上篇教程学院君介绍了如何通过 sync.WaitGroup 类型优化通道对多协程协调的处理,但是现在有一个问题,就是我们在启动子协程...
sync 包(四):sync.WaitGroup 和 sync.Once
在介绍通道的时候,如果启用了多个子协程,我们是这样实现主协程等待子协程执行完毕并退出的:声明一个和子协程数量一致的通道数组,然后为每...
sync 包(三):原子操作
中断与原子操作 我们在前两篇教程中讨论了互斥锁、读写锁以及基于它们的条件变量。互斥锁是一个同步工具,它可以保证每一时刻进入临界区的...
sync 包(二):条件变量 sync.Cond
sync 包还提供了一个条件变量类型 sync.Cond,它可以和互斥锁或读写锁(以下统称互斥锁)组合使用,用来协调想要访问共享资源...
利用多核 CPU 实现并行计算
开始之前,我们先澄清两个概念,「多核」指的是有效利用 CPU 的多核提高程序执行效率,「并行」和「并发」一字之差,但其实是两个完全不...
通道类型篇(四):错误和异常处理
在前面几篇通道教程中,我们陆续介绍了与通道相关的基本语法、单向通道以及 select 语句,有关通道的基本知识就介绍到这里,今天我们...
通道类型篇(三):通过 select 语句等待通道就绪
Go 语言还支持通过 select 分支语句选择指定分支代码执行,select 语句和之前介绍的 switch 语句语法结构类似,不...