Go 语言并发编程系列教程(十四)—— 通过 context 包提供的函数实现多协程之间的协作

上篇教程学院君介绍了如何通过 sync.WaitGroup 类型优化通道对多协程协调的处理,但是现在有一个问题,就是我们在启动子协程之前都已经明确知道子协程的总量,如果不知道的话,该怎么实现呢? 一种解决方案是通过 sync.WaitGroup 分批启动子协程,具体实现代码如下: package main import ( "fmt" "sync" ) func ad...

最佳实践系列(十):PHP 统一资源处理 API —— 流(Stream)的概述与使用详解

在现代 PHP 特性中,流或许是最出色但使用率最低的。虽然 PHP 4.3 就引入了流,但是很多开发者并不知道流的存在,因为人们很少提及流,而且流的文档也很匮乏。PHP 官方文档对流的解释如下: 流的作用是提供统一的公共函数来处理文件、网络和数据压缩等操作。简单而言,流是具有流式行为的资源对象,也就是说,流可以线性读写,并且可以通过 fseek() 之类的函数定位到流中的任何位置。 ...