
包邮JAVASCRIPT多线程编程实践

- ISBN:9787519883416
- 装帧:平装-胶订
- 册数:暂无
- 重量:暂无
- 开本:16开
- 页数:240
- 出版时间:2023-12-01
- 条形码:9787519883416 ; 978-7-5198-8341-6
本书特色
编辑推荐
你准备好用JavaScript构建多线程应用程序了吗?通过这本实用的书,中级JavaScript开发者将理解浏览器提供的Web Worker API和Node.js提供的worker线程模块的优点和缺点。
专家推荐
“Bryan和Thomas精湛地阐述了多线程开发的基础,并巧妙地说明了各种JavaScript运行时如何实现并行计算。”
——James Snell
Node.js技术指导委员会成员
“这本书正是我在深入研究工作线程时希望阅读的书。它详细且实用,是一本很好的参考书。特别要赞扬其中的分析章节。”
——Matteo Collina
NearForm首席软件架构师
内容简介
本书主要讨论了构建多线程应用的两种方法:一种是使用消息传递,另一种是使用共享内存。你将学习实现每种方法的API,包括根据情况进行选择,以及何时可以结合使用它们。你还将亲自动手实践这些方法构建的高级模式。本书的主要内容有:学习如何从多线程编程中受益。了解专用 worker、共享 worker和服务 worker之间的区别。知道何时以及何时不应该在应用程序中使用多线程。通过利用Atomics对象协调线程之间的通信。应用这些知识来构建高性能的应用程序。从多线程中受益的评估方式。
目录
序 1
前言 3
目录
第1 章 概述 9
1.1 什么是线程 11
1.2 并发性和并行性 13
1.3 单线程的JavaScript .15
1.4 隐藏的线程 18
1.5 C 语言中的线程:用快乐币致富 . 20
1.5.1 仅用一个主线程 21
1.5.2 使用4 个工作线程 .24
第2 章 浏览器 29
2.1 专用worker .30
2.1.1 专用worker 的Hello World 30
2.1.2 专用worker 的高级用法 .34
2.2 共享worker .36
2.2.1 共享worker 的Hello World 38
2.2.2 共享worker 的高级用法 .44
2.3 service worker .47
2.3.1 service worker 的Hello World 49
2.3.2 service worker 的高级概念 .55
2.4 消息传递的抽象 58
2.4.1 RPC 模式 .58
2.4.2 命令调度器模式 60
2.4.3 混合模式 .62
第3 章 Node.js .71
3.1 在拥有线程之前 72
3.2 worker_threads 模块 75
3.2.1 workerData .76
3.2.2 MessagePort 77
3.3 再次看快乐币(Happycoin)这个程序 .79
3.3.1 单线程版本 80
3.3.2 四个线程的版本 82
3.4 带有Piscina 的worker 池 .85
3.5 一个完整的池化快乐币的例子 90
第4 章 共享内存 95
4.1 共享内存简介 .96
4.1.1 浏览器中的共享内存.96
4.1.2 在Node.js 中的共享内存 . 100
4.2 SharedArrayBuffer 和TypedArrays 102
4.3 数据操作的原子方法 108
4.3.1 Atomics.add() . 109
4.3.2 Atomics.and() . 109
4.3.3 Atomics.compareExchange() 110
4.3.4 Atomics.exchange() . 110
4.3.5 Atomics.isLockFree() . 110
4.3.6 Atomics.load() 111
4.3.7 Atomics.or() 111
4.3.8 Atomics.store() 111
4.3.9 Atomics.sub() . 112
4.3.10 Atomics.xor() 112
4.4 原子性问题 112
4.5 数据序列化 116
4.5.1 布尔值 116
4.5.2 字符串 118
4.5.3 对象 . 120
第5 章 高级共享内存 121
5.1 原子协调方法 121
5.1.1 Atomics.wait() 122
5.1.2 Atomics.notify() 124
5.1.3 Atomics.waitAsync() 124
5.2 时间和不确定性 . 125
5.2.1 不确定性的例子 125
5.2.2 检测线程准备情况 129
5.3 示例应用:康威生命游戏 . 132
5.3.1 单线程生命游戏 133
5.3.2 多线程生命游戏 139
5.4 原子和事件 146
第6 章 多线程模式 149
6.1 线程池 . 149
6.1.1 线程池的大小 . 150
6.1.2 调度策略 152
6.1.3 应用实例 153
6.2 互斥锁:一个基本的锁 161
6.3 用环形缓冲器处理数据流 . 167
6.4 演员模型. 176
6.4.1 模式差异 177
6.4.2 与JavaScript 的关联 178
6.4.3 示例实现 179
第7 章 WebAssembly . 189
7.1 你的**个WebAssembly .190
7.2 WebAssembly 中的原子操作 192
7.3 用Emscripten 将C 程序编译成WebAssembly 194
7.4 其他WebAssembly 编译器 196
7.5 AssemblyScript 197
7.6 AssemblyScript 中的快乐币 199
第8 章 分析 . 205
8.1 何时不使用 205
8.1.1 低内存限制 . 206
8.1.2 低核心数 209
8.1.3 容器与线程 . 213
8.2 何时使用. 213
8.3 注意事项. 219
附录 结构化克隆算法 223
作者简介
Thomas Hunter II为数十个企业级Node.js服务做出了贡献,并曾在一家致力于保障Node.js安全的公司工作。他在多个关于Node.js和JavaScript的会议上发表过演讲,拥有JSNSD/JSNAD认证,并且是NodeSchool SF的组织者。Bryan English是一位开源JavaScript和Rust程序员,他曾在大型企业系统、仪表盘和应用安全方面工作过。作为Datadog的高级开源软件工程师,Bryan是Node.js核心协作者,为多个工作组做出了贡献。
-
造神:人工智能神话的起源和破除 (精装)
¥32.7¥88.0 -
人人都能学AI
¥40.4¥68.0 -
人工智能
¥20.3¥55.0 -
大数据技术导论(第2版)
¥28.9¥41.0 -
过程控制技术(第2版高职高专规划教材)
¥27.6¥38.0 -
有限与无限的游戏:一个哲学家眼中的竞技世界
¥36.4¥68.0 -
WPS OFFICE完全自学教程(第2版)
¥97.3¥139.0 -
智能视频目标检测与识别技术
¥43.5¥59.0 -
人工智能基础及应用
¥36.0¥48.0 -
深入浅出软件架构
¥117.2¥186.0 -
软件设计的哲学(第2版)
¥52.0¥69.8 -
人工智能的底层逻辑
¥57.9¥79.0 -
剪映+PREMIERE+AIGC 短视频制作速成
¥73.5¥98.0 -
剪映AI
¥52.0¥88.0 -
数据采集与处理
¥36.4¥49.8 -
PLC结构化文本编程(第2版)
¥57.9¥79.0 -
中小型网络组建与管理
¥30.7¥43.0 -
上海市老年教育推荐用书:老年人智慧生活(进阶篇)
¥32.5¥45.0 -
上海市老年教育推荐用书:老年人智慧生活(初级篇)
¥29.3¥45.0 -
SOLIDWORKS中文版实用教程
¥104.9¥149.9