This commit is contained in:
Xargin
2017-05-03 10:48:04 +08:00
parent 7f9ba35f58
commit dc92697fec
3 changed files with 5 additions and 5 deletions

View File

@@ -41,7 +41,7 @@ func makeThumbnails2(filenames []string) {
这个版本运行的实在有点太快实际上由于它比最早的版本使用的时间要短得多即使当文件名的slice中只包含有一个元素。这就有点奇怪了如果程序没有并发执行的话那为什么一个并发的版本还是要快呢答案其实是makeThumbnails在它还没有完成工作之前就已经返回了。它启动了所有的goroutine每一个文件名对应一个但没有等待它们一直到执行完毕。
没有什么直接的办法能够等待goroutine完成但是我们可以改变goroutine里的代码让其能够将完成情况报告给外部的goroutine知晓使用的方式是向一个共享的channel中发送事件。因为我们已经知道内部的goroutine只有len(filenames)所以外部的goroutine只需要在返回之前对这些事件计数。
没有什么直接的办法能够等待goroutine完成但是我们可以改变goroutine里的代码让其能够将完成情况报告给外部的goroutine知晓使用的方式是向一个共享的channel中发送事件。因为我们已经确切地知道有len(filenames)个内部goroutine所以外部的goroutine只需要在返回之前对这些事件计数。
```go
// makeThumbnails3 makes thumbnails of the specified files in parallel.