返回介绍

10.9 练习

发布于 2024-08-14 12:50:31 字数 3114 浏览 0 评论 0 收藏 0

  • 使用缓冲通道实现一个并发版本的 wc(1)
  • 接着,使用共享内存实现一个并发版本的 wx(1)
  • 最后,使用监视 goroutine 实现一个并发版本的 wx(1)
  • 修改 workerPool.go 的源码来保存结果到文件里。处理文件时,使用互斥锁和关键部分,或者一个监视 goroutine 来保证在磁盘上写入您的数据。
  • workerPool.gosize 全局变量为 1 时会发生什么?为什么?
  • 修改 workerPool.go 的源码来实现 wc(1) 支持命令行功能。
  • 修改 workerPool.go 的源码来实现 clientsdata 缓冲通道的大小可以通过命令行参数来定义。
  • 使用监视 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) 命令行工具。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文