Go 语言并发编程系列教程(十三)—— sync 包(四):sync.WaitGroup 和 sync.Once

在介绍通道的时候,如果启用了多个子协程,我们是这样实现主协程等待子协程执行完毕并退出的:声明一个和子协程数量一致的通道数组,然后为每个子协程分配一个通道元素,在子协程执行完毕时向对应的通道发送数据;然后在主协程中,我们依次读取这些通道接收子协程发送的数据,只有所有通道都接收到数据才会退出主协程。 代码看起来是这样的: chs := make([]chan int, 10) for i :...

基于 Swoole 构建高性能 Laravel 应用系列 —— Swoole 驱动的 Laravel 应用优化原理及注意事项

上篇教程学院君给大家简单介绍了 Swoole 底层组件和运行原理,今天我们结合 Laravel 框架来介绍基于 Swoole 驱动的 Laravel 应用开发与传统的基于 PHP-FPM 的 Laravel 应用开发有哪些区别,在开发过程中要注意些什么。 Swoole vs. PHP-FPM 我们先来看看传统的基于 PHP-FPM 的 Laravel 应用启动和请求处理流程: 如上图所...

PHP 设计模式系列 —— 单例模式(Singleton)

1、模式定义 简单说来,单例模式的作用就是保证在整个应用程序的生命周期中,任何一个时刻,单例类的实例都只存在一个,同时这个类还必须提供一个访问该类的全局访问点。 常见使用实例:数据库连接器;日志记录器(如果有多种用途使用多例模式);锁定文件。 2、UML类图 3、示例代码 Singleton.php <?php namespace DesignPatter...

PHP 设计模式系列 —— 多例模式(Multiton)

1、模式定义 多例模式和单例模式类似,但可以返回多个实例。比如我们有多个数据库连接,MySQL、SQLite、Postgres,又或者我们有多个日志记录器,分别用于记录调试信息和错误信息,这些都可以使用多例模式实现。 2、UML类图 3、示例代码 Multiton.php <?php namespace DesignPatterns\Creational\Mul...