JavaScript多线程编程实践
Thomas Hunter II, Bryan English
余琦, 黎智葳, 王玲 译
出版时间:2023年12月
页数:225
“Bryan和Thomas精湛地阐述了多线程开发的基础,并巧妙地说明了各种JavaScript运行时如何实现并行计算。”
——James Snell
Node.js技术指导委员会成员
“这本书正是我在深入研究工作线程时希望阅读的书。它详细且实用,是一本很好的参考书。特别要赞扬其中的分析章节。”
——Matteo Collina
NearForm首席软件架构师

你准备好用JavaScript构建多线程应用程序了吗?通过这本实用的书,中级JavaScript开发者将理解浏览器提供的Web Worker API和Node.js提供的worker线程模块的优点和缺点。
本书作者主要讨论了构建多线程应用的两种方法:一种是使用消息传递,另一种是使用共享内存。你将学习实现每种方法的API,包括根据情况进行选择,以及何时可以结合使用它们。你还将亲自动手实践这些方法构建的高级模式。
● 学习如何从多线程编程中受益。
● 了解专用 worker、共享 worker和服务 worker之间的区别。
● 知道何时以及何时不应该在应用程序中使用多线程。
● 通过利用Atomics对象协调线程之间的通信。
● 应用这些知识来构建高性能的应用程序。
● 从多线程中受益的评估方式。
  1. 前言
  2. 第1章 概述
  3. 1.1 什么是线程
  4. 1.2 并发性和并行性
  5. 1.3 单线程的JavaScript
  6. 1.4 隐藏的线程
  7. 1.5 C语言中的线程:用快乐币致富
  8. 1.5.1 仅用一个主线程
  9. 1.5.2 使用4个工作线程
  10. 第2章 浏览器
  11. 2.1 专用worker
  12. 2.1.1 专用worker的Hello World
  13. 2.1.2 专用worker的高级用法
  14. 2.2 共享worker
  15. 2.2.1 共享worker的Hello World
  16. 2.2.2 共享worker的高级用法
  17. 2.3 service worker
  18. 2.3.1 service worker的Hello World
  19. 2.3.2 service worker的高级概念
  20. 2.4 消息传递的抽象
  21. 2.4.1 RPC模式
  22. 2.4.2 命令调度器模式
  23. 2.4.3 混合模式
  24. 第3章 Node.js
  25. 3.1 在拥有线程之前
  26. 3.2 worker_threads模块
  27. 3.2.1 workerData
  28. 3.2.2 MessagePort
  29. 3.3 再次看快乐币(Happycoin)这个程序
  30. 3.3.1 单线程版本
  31. 3.3.2 四个线程的版本
  32. 3.4 带有Piscina的worker池
  33. 3.5 一个完整的池化快乐币的例子
  34. 第4章 共享内存
  35. 4.1 共享内存简介
  36. 4.1.1 浏览器中的共享内存
  37. 4.1.2 在Node.js中的共享内存
  38. 4.2 SharedArrayBuffer和TypedArrays
  39. 4.3 数据操作的原子方法
  40. 4.3.1 Atomics.add()
  41. 4.3.2 Atomics.and()
  42. 4.3.3 Atomics.compareExchange()
  43. 4.3.4 Atomics.exchange()
  44. 4.3.5 Atomics.isLockFree()
  45. 4.3.6 Atomics.load()
  46. 4.3.7 Atomics.or()
  47. 4.3.8 Atomics.store()
  48. 4.3.9 Atomics.sub()
  49. 4.3.10 Atomics.xor()
  50. 4.4 原子性问题
  51. 4.5 数据序列化
  52. 4.5.1 布尔值
  53. 4.5.2 字符串
  54. 4.5.3 对象
  55. 第5章 高级共享内存
  56. 5.1 原子协调方法
  57. 5.1.1 Atomics.wait()
  58. 5.1.2 Atomics.notify()
  59. 5.1.3 Atomics.waitAsync()
  60. 5.2 时间和不确定性
  61. 5.2.1 不确定性的例子
  62. 5.2.2 检测线程准备情况
  63. 5.3 示例应用:康威生命游戏
  64. 5.3.1 单线程生命游戏
  65. 5.3.2 多线程生命游戏
  66. 5.4 原子和事件
  67. 第6章 多线程模式
  68. 6.1 线程池
  69. 6.1.1 线程池的大小
  70. 6.1.2 调度策略
  71. 6.1.3 应用实例
  72. 6.2 互斥锁:一个基本的锁
  73. 6.3 用环形缓冲器处理数据流
  74. 6.4 演员模型
  75. 6.4.1 模式差异
  76. 6.4.2 与JavaScript的关联
  77. 6.4.3 示例实现
  78. 第7章 WebAssembly
  79. 7.1 你的第一个WebAssembly
  80. 7.2 WebAssembly中的原子操作
  81. 7.3 用Emscripten将C程序编译成WebAssembly
  82. 7.4 其他WebAssembly编译器
  83. 7.5 AssemblyScript
  84. 7.6 AssemblyScript中的快乐币
  85. 第8章 分析
  86. 8.1 何时不使用
  87. 8.1.1 低内存限制
  88. 8.1.2 低核心数
  89. 8.1.3 容器与线程
  90. 8.2 何时使用
  91. 8.3 注意事项
  92. 附录 结构化克隆算法
书名:JavaScript多线程编程实践
译者:余琦, 黎智葳, 王玲 译
国内出版社:中国电力出版社
出版时间:2023年12月
页数:225
书号:978-7-5198-8341-6
原版书书名:Multithreaded Javascript
原版书出版商:O'Reilly Media
Thomas Hunter II
 
Thomas Hunter II已让Node.js在数十个企业中大放光彩,他现在在为一家致力于让Node.js更加安全的公司工作。他曾在数个关于Node.js和JavaScript的会议上发表讲话,并获得了JSNSD/JSNAD认证,同时他还是NodeSchool SF的组织者之一。
 
 
Bryan English
 
Bryan English是一位开源JavaScript和Rust程序员,他曾在大型企业系统、仪表盘和应用安全方面工作过。作为Datadog的高级开源软件工程师,Bryan是Node.js核心协作者,为多个工作组做出了贡献。
 
 
本书封面上的动物是绿翅鸭(学名:Anas crecca)。这种鸭子常见于加拿大北部的湿地和北极森林,在冬天,它会往南方迁移到北美的其他大部分地方。
繁殖期的雄性绿翅鸭有灰色的侧躯和背部,黄色的后部和栗色头上的绿色斑块。它们的名字来源于特别的白边绿色镜羽。雌性绿翅鸭是浅棕色的,看起来和雌性绿头鸭非常相似。绿翅鸭是北美最小的翻浆鸭。它们喜欢浅水,常常在树桩或泥岸上休息。
绿翅鸭是一种相当喧闹的物种,雄性绿翅鸭有清晰的鸣声,而雌鸟有明显的“嘎嘎”叫声。它们主要在泥滩或浅水湿地寻找食物,吃水生和初生植物的种子,茎和叶子。它们的捕食者包括人类,臭鼬,红狐,浣熊,乌鸦和喜鹊。
绿翅鸭当前的保护状态是“最小关注”。O’Reilly封面上的许多动物都处于濒危状态,所有这些动物都对世界至关重要。
购买选项
定价:78.00元
书号:978-7-5198-8341-6
出版社:中国电力出版社