登入帳戶  | 訂單查詢  | 購物車/收銀台( 0 ) | 在線留言板  | 付款方式  | 聯絡我們  | 運費計算  | 幫助中心 |  加入書簽
會員登入 新註冊 | 新用戶登記
HOME新書上架暢銷書架好書推介特價區會員書架精選月讀2023年度TOP分類閱讀雜誌 香港/國際用戶
最新/最熱/最齊全的簡體書網 品種:超過100萬種書,正品正价,放心網購,悭钱省心 送貨:速遞 / EMS,時效:出貨後2-3日

2024年04月出版新書

2024年03月出版新書

2024年02月出版新書

2024年01月出版新書

2023年12月出版新書

2023年11月出版新書

2023年10月出版新書

2023年09月出版新書

2023年08月出版新書

2023年07月出版新書

2023年06月出版新書

2023年05月出版新書

2023年04月出版新書

2023年03月出版新書

『簡體書』JavaScript多线程编程实践

書城自編碼: 3942580
分類: 簡體書→大陸圖書→計算機/網絡程序設計
作者: [美]托马斯 亨特二世[Thomas Hunter II],
國際書號(ISBN): 9787519883416
出版社: 中国电力出版社
出版日期: 2023-12-01

頁數/字數: /
書度/開本: 16开 釘裝: 平装

售價:NT$ 437

我要買

share:

** 我創建的書架 **
未登入.



新書推薦:
麦肯锡原则:成就全球顶级公司的11条经验    (美) 达夫·麦克唐纳
《 麦肯锡原则:成就全球顶级公司的11条经验 (美) 达夫·麦克唐纳 》

售價:NT$ 498.0
今日宜偏爱(全二册)
《 今日宜偏爱(全二册) 》

售價:NT$ 447.0
氢经济
《 氢经济 》

售價:NT$ 549.0
从中国出发的全球史
《 从中国出发的全球史 》

售價:NT$ 2229.0
为你沦陷
《 为你沦陷 》

售價:NT$ 262.0
校园欺凌
《 校园欺凌 》

售價:NT$ 279.0
培训需求分析与年度计划制订——基于组织战略,做”对的”培训!
《 培训需求分析与年度计划制订——基于组织战略,做”对的”培训! 》

售價:NT$ 386.0
这就是心理咨询:全球心理咨询师都在用的45项技术(第3版)
《 这就是心理咨询:全球心理咨询师都在用的45项技术(第3版) 》

售價:NT$ 717.0

建議一齊購買:

+

NT$ 610
《 搞定系统设计:面试敲开大厂的门 》
+

NT$ 774
《 Effective Java中文版(原书第3版) 》
+

NT$ 545
《 学习JavaScript数据结构与算法 第3版 》
+

NT$ 579
《 用Go语言自制编译器 》
+

NT$ 425
《 网页设计与网站建设从入门到精通 》
+

NT$ 813
《 Qt 5开发及实例(第4版)(含典型案例视频分析) 》
編輯推薦:
编辑推荐
你准备好用JavaScript构建多线程应用程序了吗?通过这本实用的书,中级JavaScript开发者将理解浏览器提供的Web Worker API和Node.js提供的worker线程模块的优点和缺点。
专家推荐
“Bryan和Thomas精湛地阐述了多线程开发的基础,并巧妙地说明了各种JavaScript运行时如何实现并行计算。”
——James Snell
Node.js技术指导委员会成员
“这本书正是我在深入研究工作线程时希望阅读的书。它详细且实用,是一本很好的参考书。特别要赞扬其中的分析章节。”
——Matteo Collina
NearForm首席软件架构师
內容簡介:
本书主要讨论了构建多线程应用的两种方法:一种是使用消息传递,另一种是使用共享内存。你将学习实现每种方法的API,包括根据情况进行选择,以及何时可以结合使用它们。你还将亲自动手实践这些方法构建的高级模式。本书的主要内容有:学习如何从多线程编程中受益。了解专用 worker、共享 worker和服务 worker之间的区别。知道何时以及何时不应该在应用程序中使用多线程。通过利用Atomics对象协调线程之间的通信。应用这些知识来构建高性能的应用程序。从多线程中受益的评估方式。
關於作者:
Thomas Hunter II为数十个企业级Node.js服务做出了贡献,并曾在一家致力于保障Node.js安全的公司工作。他在多个关于Node.js和JavaScript的会议上发表过演讲,拥有JSNSD/JSNAD认证,并且是NodeSchool SF的组织者。Bryan English是一位开源JavaScript和Rust程序员,他曾在大型企业系统、仪表盘和应用安全方面工作过。作为Datadog的高级开源软件工程师,Bryan是Node.js核心协作者,为多个工作组做出了贡献。
目錄
目录
序 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
內容試閱
前言Bryan 和我(Thomas)的第一次见面,是在我在一个日本手机游戏开发公司DeNA 旧金山分公司的面试上。显然,大多数高层都打算拒绝我的求职,但在当天晚上晚些时候的Node.js 聚会上,我们俩闲聊了一阵之后,Bryan 去说服了他们给我一份offer。在DeNA 工作期间,Bryan 和我的工作在于编写可以复用的Node.js 模块,以便于游戏团队可以通过组装组件的方式,来适应游戏中的需求,从而构建出游戏服务器。性能是一项我们总是需要测试的点,指导游戏团队如何去提升性能是我们工作的一部分。我们的服务器不断地受到来自传统依赖C 行业的开发者的审查。我们俩也会以其他身份一起工作。其中的一个角色是, 我们在一家名为Intrinsic 的初创安全公司中,以非常完整而又精细的粒度去强化Node.js 应用程序,我怀疑这个世界上绝不会再看到类似的产品。性能调优也是这个产品的一大关注点,因为客户们不想这个产品影响他们服务器的吞吐量。我们花了许多时间运行基准测试,研究火焰图,并且深入地挖掘了Node.js 的内部代码。如果worker 线程模块在客户要求的所有Node.js 版本中都可用,我会毫不犹豫地将它们并入这个产品中。我们还在非职业的层面上合作过。NodeSchool SF(https://oreil.ly/TNS5w)就是其中的一个例子,在那里我们都是以志愿者的身份去教别人如何使用JavaScript,以及如何构建一个Node.js 程序。同时我们也在许多大会或聚会上做演讲。这本书的两个作者都对JavaScript 和Node.js 充满热情,并乐于将它们分享给其他人,并消除其中的一些误解。当我们认识到关于构建多线程JavaScript 应用程序的文档是如此缺乏的时候,我们知道必须得去做些什么。这本书地诞生不仅源于我们期望教会其他人如何使用JavaScript,还希望它可以帮助类似Node.js 这样的平台,在利用硬件资源来构建高性能服务的时候,可以像其他任何平台一样强大。本书面向的读者对象阅读这本书的理想读者是一名有过数年JavaScript 编程经验的工程师,他不需要拥有编写多线程应用程序的经验,也不需要拥有一些诸如C 或者Java 等传统多线程语言的经验。我们会在其中包含一些C 应用程序的代码例子,来作为一种多线程通用语言,但读者并不一定需要熟悉或理解它们。如果你有一些这些编程语言的经验,那很棒,这本书将会帮助你理解JavaScript中,在你所熟悉的语言中所提供的相同功能是怎样的。相反,如果你仅仅使用过JavaScript 编写代码,这本书同样对你适用。我们包含了多个层次的信息来进行学习,包括了低层次的API 参考,高层次的模式,以及介于两者之间的大量技术点来填补任何空缺。写作本书的目的本书最大的目标是给社区带来可以通过JavaScript 来构建多线程应用的知识。传统的JavaScript 代码被限制在一个核之内,事实上在Twitter 或者论坛中也有许多主题和帖子像这样描述这门语言。通过多线程JavaScript 这样的标题,我们希望彻底消除JavaScript 应用只能限制在一个核之内的偏见。更进一步的目标是,它会教导包括你在内的读者一些关于如何编写JavaScript多线程应用的内容。当你读完本书的时候,你会理解浏览器中提供的各种Web worker API,了解它们强大与脆弱之处,以及何时何地去使用它们。就Node.js而言,你会理解worker 线程模块以及它的API 与浏览器中的异同。本书重点介绍了构建多线程应用的两种方法:一个是使用消息传递,另一个是使用共享内存。通过阅读本书你会了解当你想使用任意一种方法的时候,以及在某些混合场景中,该如何通过API 去实现,并且你甚至可以尽情尝试一些基于这些方法的高级模式。使用代码示例补充材料(代码示例、练习等)可以到https://github.com/MultithreadedJSBook/code-samples 下载。对本书的评论或技术疑问,可以发电子邮件到errata@oreilly.com.cn。本书的目的是帮助你完成工作。一般来说,你可以在自己的程序或者文档中使用本书附带的示例代码。你无需联系我们获得使用许可,除非你要复制大量的代码。例如,使用本书中的多个代码片段编写程序就无需获得许可。但以CDROM的形式销售或者分发O’Reilly 书中的示例代码则需要获得许可。回答问题时援引本书内容以及书中示例代码,无需获得许可。在你自己的项目文档中使用本书大量的示例代码时,则需要获得许可。我们不强制要求署名,但如果你这么做,我们深表感激。署名一般包括书名、作者、出版社和国际标准图书编号。例如:“Multithreaded JavaScript by Thomas Hunter II and Bryan English (O’Reilly). Copyright 2022 Thomas Hunter II and Bryan English, 978-1-098-10443-6”。如果你觉得自身情况不在合理使用或上述允许的范围内,请通过邮件和我们联系,地址是 permissions@oreilly.com。O’Reilly 在线学习平台(O’Reilly Online Learning)近40 年来,O’Reilly Media 致力于提供技术和商业培训、知识和卓越见解,来帮助众多公司取得成功。公司独有的专家和改革创新者网络通过O’Reilly 书籍、文章以及在线学习平台,分享他们的专业知识和实践经验。O’Reilly 在线学习平台按照您的需要提供实时培训课程、深入学习渠道、交互式编程环境以及来自O’Reilly 和其他200 多家出版商的大量书籍与视频资料。更多信息,请访问网站:https://www.oreilly.com/。联系我们任何有关本书的意见或疑问,请按照以下地址联系出版社。美国:O’Reilly Media, Inc.1005 Gravenstein Highway NorthSebastopol, CA 95472中国:北京市西城区西直门南大街2 号成铭大厦C 座807 室(100035)奥莱利技术咨询(北京)有限公司我们为本书配置了专属网页,在上面列出了勘误表、示例以及其他附加信息。你可以通过https://oreil.ly/multithreaded-js 来访问。如果你对本书有一些评论或技术上的建议,请发送电子邮件到errata@oreilly.com.cn。要了解O’Reilly 的图书和培训课程的新闻和信息,请访问我们的网站:http://www.oreilly.com。我们的Facebook:http://facebook.com/oreilly。我们的Twitter:http://twitter.com/oreillymedia。我们的YouTube:http://www.youtube.com/oreillymedia。致谢本书的成书得益于以下人员提供的专业技术评审:Anna Henningsen(@addaleax)Anna 目前是德国MongoDB 开发人员工具团队的一员,在过去五年中一直是Node.js 核心最活跃的贡献者之一,并积极参与了该平台的worker 线程的实现。她对Node.js 及其社区充满热情。Shu-yu Guo(@_shu)Shu 致力于JavaScript 实现和标准化。他是TC39 成员,ECMAScript 规范的编辑之一,以及内存模型的作者。他目前在Google 从事V8 引擎的工作,领导JavaScript 语言特性的实现和标准。此前,他曾在Mozilla 和Bloomberg 工作过。Fernando Larra?aga(@Xabadu)Fernando 是一名工程师和开源贡献者, 多年来一直在南美和美国领导JavaScript 和Node.js 社区。他目前是Square 的高级软件工程师和NodeSchool SF 的组织者,从2014 年以来,在他之前其他主要科技公司(如Twilio 和Groupon)任职期间,他一直在开发企业级Node.js 并将Web 应用扩展到百万级用户的规模。

 

 

書城介紹  | 合作申請 | 索要書目  | 新手入門 | 聯絡方式  | 幫助中心 | 找書說明  | 送貨方式 | 付款方式 香港用户  | 台灣用户 | 海外用户
megBook.com.tw
Copyright (C) 2013 - 2024 (香港)大書城有限公司 All Rights Reserved.