使用缓冲通道实现一个并发版本的 wc(1)
。
接着,使用共享内存实现一个并发版本的 wx(1)
。
最后,使用监视 goroutine 实现一个并发版本的 wx(1)
。
修改 workerPool.go
的源码来保存结果到文件里。处理文件时,使用互斥锁和关键部分,或者一个监视 goroutine 来保证在磁盘上写入您的数据。
当 workerPool.go
的 size
全局变量为 1
时会发生什么?为什么?
修改 workerPool.go
的源码来实现 wc(1)
支持命令行功能。
修改 workerPool.go
的源码来实现 clients
和 data
缓冲通道的大小可以通过命令行参数来定义。
使用监视 goroutine 写一个并发版本的 find(1)
命令行工具。
修改 simpleContext.go
源码,把在 f1()
, f2()
, f3()
中使用的匿名函数改为一个单独的函数。这个改动的难点是什么?
修改 simpleContext.go
的源码,让 f1()
,f2()
,f3()
函数使用外部创建的 Context
变量而不是它们自己的。
修改 useContext.go
源码,使用 context.WithDeadline()
或者 context.WithCancel()
来代替 context.WithTimeout()
。
最后,使用 sync.Mutex
互斥锁时间一个并发版本的 find(1)
命令行工具。