10.9 练习
使用缓冲通道实现一个并发版本的
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)
命令行工具。
Last updated