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
Was this helpful?