JavaScript多線(xiàn)程編程實(shí)踐
余琦, 黎智葳, 王玲 譯
出版時(shí)間:2023年12月
頁(yè)數(shù):225
“Bryan和Thomas精湛地闡述了多線(xiàn)程開(kāi)發(fā)的基礎(chǔ),并巧妙地說(shuō)明了各種JavaScript運(yùn)行時(shí)如何實(shí)現(xiàn)并行計(jì)算?!?br />
——James Snell
Node.js技術(shù)指導(dǎo)委員會(huì)成員
“這本書(shū)正是我在深入研究工作線(xiàn)程時(shí)希望閱讀的書(shū)。它詳細(xì)且實(shí)用,是一本很好的參考書(shū)。特別要贊揚(yáng)其中的分析章節(jié)。”
——Matteo Collina
NearForm首席軟件架構(gòu)師
你準(zhǔn)備好用JavaScript構(gòu)建多線(xiàn)程應(yīng)用程序了嗎?通過(guò)這本實(shí)用的書(shū),中級(jí)JavaScript開(kāi)發(fā)者將理解瀏覽器提供的Web Worker API和Node.js提供的worker線(xiàn)程模塊的優(yōu)點(diǎn)和缺點(diǎn)。
本書(shū)作者主要討論了構(gòu)建多線(xiàn)程應(yīng)用的兩種方法:一種是使用消息傳遞,另一種是使用共享內(nèi)存。你將學(xué)習(xí)實(shí)現(xiàn)每種方法的API,包括根據(jù)情況進(jìn)行選擇,以及何時(shí)可以結(jié)合使用它們。你還將親自動(dòng)手實(shí)踐這些方法構(gòu)建的高級(jí)模式。
● 學(xué)習(xí)如何從多線(xiàn)程編程中受益。
● 了解專(zhuān)用 worker、共享 worker和服務(wù) worker之間的區(qū)別。
● 知道何時(shí)以及何時(shí)不應(yīng)該在應(yīng)用程序中使用多線(xiàn)程。
● 通過(guò)利用Atomics對(duì)象協(xié)調(diào)線(xiàn)程之間的通信。
● 應(yīng)用這些知識(shí)來(lái)構(gòu)建高性能的應(yīng)用程序。
● 從多線(xiàn)程中受益的評(píng)估方式。
- 序
- 前言
- 第1章 概述
- 1.1 什么是線(xiàn)程
- 1.2 并發(fā)性和并行性
- 1.3 單線(xiàn)程的JavaScript
- 1.4 隱藏的線(xiàn)程
- 1.5 C語(yǔ)言中的線(xiàn)程:用快樂(lè)幣致富
- 1.5.1 僅用一個(gè)主線(xiàn)程
- 1.5.2 使用4個(gè)工作線(xiàn)程
- 第2章 瀏覽器
- 2.1 專(zhuān)用worker
- 2.1.1 專(zhuān)用worker的Hello World
- 2.1.2 專(zhuān)用worker的高級(jí)用法
- 2.2 共享worker
- 2.2.1 共享worker的Hello World
- 2.2.2 共享worker的高級(jí)用法
- 2.3 service worker
- 2.3.1 service worker的Hello World
- 2.3.2 service worker的高級(jí)概念
- 2.4 消息傳遞的抽象
- 2.4.1 RPC模式
- 2.4.2 命令調(diào)度器模式
- 2.4.3 混合模式
- 第3章 Node.js
- 3.1 在擁有線(xiàn)程之前
- 3.2 worker_threads模塊
- 3.2.1 workerData
- 3.2.2 MessagePort
- 3.3 再次看快樂(lè)幣(Happycoin)這個(gè)程序
- 3.3.1 單線(xiàn)程版本
- 3.3.2 四個(gè)線(xiàn)程的版本
- 3.4 帶有Piscina的worker池
- 3.5 一個(gè)完整的池化快樂(lè)幣的例子
- 第4章 共享內(nèi)存
- 4.1 共享內(nèi)存簡(jiǎn)介
- 4.1.1 瀏覽器中的共享內(nèi)存
- 4.1.2 在Node.js中的共享內(nèi)存
- 4.2 SharedArrayBuffer和TypedArrays
- 4.3 數(shù)據(jù)操作的原子方法
- 4.3.1 Atomics.add()
- 4.3.2 Atomics.and()
- 4.3.3 Atomics.compareExchange()
- 4.3.4 Atomics.exchange()
- 4.3.5 Atomics.isLockFree()
- 4.3.6 Atomics.load()
- 4.3.7 Atomics.or()
- 4.3.8 Atomics.store()
- 4.3.9 Atomics.sub()
- 4.3.10 Atomics.xor()
- 4.4 原子性問(wèn)題
- 4.5 數(shù)據(jù)序列化
- 4.5.1 布爾值
- 4.5.2 字符串
- 4.5.3 對(duì)象
- 第5章 高級(jí)共享內(nèi)存
- 5.1 原子協(xié)調(diào)方法
- 5.1.1 Atomics.wait()
- 5.1.2 Atomics.notify()
- 5.1.3 Atomics.waitAsync()
- 5.2 時(shí)間和不確定性
- 5.2.1 不確定性的例子
- 5.2.2 檢測(cè)線(xiàn)程準(zhǔn)備情況
- 5.3 示例應(yīng)用:康威生命游戲
- 5.3.1 單線(xiàn)程生命游戲
- 5.3.2 多線(xiàn)程生命游戲
- 5.4 原子和事件
- 第6章 多線(xiàn)程模式
- 6.1 線(xiàn)程池
- 6.1.1 線(xiàn)程池的大小
- 6.1.2 調(diào)度策略
- 6.1.3 應(yīng)用實(shí)例
- 6.2 互斥鎖:一個(gè)基本的鎖
- 6.3 用環(huán)形緩沖器處理數(shù)據(jù)流
- 6.4 演員模型
- 6.4.1 模式差異
- 6.4.2 與JavaScript的關(guān)聯(lián)
- 6.4.3 示例實(shí)現(xiàn)
- 第7章 WebAssembly
- 7.1 你的第一個(gè)WebAssembly
- 7.2 WebAssembly中的原子操作
- 7.3 用Emscripten將C程序編譯成WebAssembly
- 7.4 其他WebAssembly編譯器
- 7.5 AssemblyScript
- 7.6 AssemblyScript中的快樂(lè)幣
- 第8章 分析
- 8.1 何時(shí)不使用
- 8.1.1 低內(nèi)存限制
- 8.1.2 低核心數(shù)
- 8.1.3 容器與線(xiàn)程
- 8.2 何時(shí)使用
- 8.3 注意事項(xiàng)
- 附錄 結(jié)構(gòu)化克隆算法
書(shū)名:JavaScript多線(xiàn)程編程實(shí)踐
譯者:余琦, 黎智葳, 王玲 譯
國(guó)內(nèi)出版社:中國(guó)電力出版社
出版時(shí)間:2023年12月
頁(yè)數(shù):225
書(shū)號(hào):978-7-5198-8341-6
原版書(shū)書(shū)名:Multithreaded Javascript
原版書(shū)出版商:O'Reilly Media
Thomas Hunter II
Thomas Hunter II已讓Node.js在數(shù)十個(gè)企業(yè)中大放光彩,他現(xiàn)在在為一家致力于讓Node.js更加安全的公司工作。他曾在數(shù)個(gè)關(guān)于Node.js和JavaScript的會(huì)議上發(fā)表講話(huà),并獲得了JSNSD/JSNAD認(rèn)證,同時(shí)他還是NodeSchool SF的組織者之一。
Bryan English
Bryan English是一位開(kāi)源JavaScript和Rust程序員,他曾在大型企業(yè)系統(tǒng)、儀表盤(pán)和應(yīng)用安全方面工作過(guò)。作為Datadog的高級(jí)開(kāi)源軟件工程師,Bryan是Node.js核心協(xié)作者,為多個(gè)工作組做出了貢獻(xiàn)。
本書(shū)封面上的動(dòng)物是綠翅鴨(學(xué)名:Anas crecca)。這種鴨子常見(jiàn)于加拿大北部的濕地和北極森林,在冬天,它會(huì)往南方遷移到北美的其他大部分地方。
繁殖期的雄性綠翅鴨有灰色的側(cè)軀和背部,黃色的后部和栗色頭上的綠色斑塊。它們的名字來(lái)源于特別的白邊綠色鏡羽。雌性綠翅鴨是淺棕色的,看起來(lái)和雌性綠頭鴨非常相似。綠翅鴨是北美最小的翻漿鴨。它們喜歡淺水,常常在樹(shù)樁或泥岸上休息。
綠翅鴨是一種相當(dāng)喧鬧的物種,雄性綠翅鴨有清晰的鳴聲,而雌鳥(niǎo)有明顯的“嘎嘎”叫聲。它們主要在泥灘或淺水濕地尋找食物,吃水生和初生植物的種子,莖和葉子。它們的捕食者包括人類(lèi),臭鼬,紅狐,浣熊,烏鴉和喜鵲。
綠翅鴨當(dāng)前的保護(hù)狀態(tài)是“最小關(guān)注”。O’Reilly封面上的許多動(dòng)物都處于瀕危狀態(tài),所有這些動(dòng)物都對(duì)世界至關(guān)重要。