注冊 | 登錄讀書好,好讀書,讀好書!
讀書網(wǎng)-DuShu.com
當(dāng)前位置: 首頁出版圖書科學(xué)技術(shù)計算機/網(wǎng)絡(luò)軟件與程序設(shè)計程序設(shè)計綜合JavaScript多線程編程實踐

JavaScript多線程編程實踐

JavaScript多線程編程實踐

定 價:¥78.00

作 者: [美]托馬斯 亨特二世(Thomas Hunter II),[加拿大]布萊恩 英格利什(Bryan English)
出版社: 中國電力出版社
叢編項:
標(biāo) 簽: 暫缺

ISBN: 9787519883416 出版時間: 2023-12-01 包裝: 平裝-膠訂
開本: 16開 頁數(shù): 字?jǐn)?shù):  

內(nèi)容簡介

  本書主要討論了構(gòu)建多線程應(yīng)用的兩種方法:一種是使用消息傳遞,另一種是使用共享內(nèi)存。你將學(xué)習(xí)實現(xiàn)每種方法的API,包括根據(jù)情況進(jìn)行選擇,以及何時可以結(jié)合使用它們。你還將親自動手實踐這些方法構(gòu)建的高級模式。本書的主要內(nèi)容有:學(xué)習(xí)如何從多線程編程中受益。了解專用 worker、共享 worker和服務(wù) worker之間的區(qū)別。知道何時以及何時不應(yīng)該在應(yīng)用程序中使用多線程。通過利用Atomics對象協(xié)調(diào)線程之間的通信。應(yīng)用這些知識來構(gòu)建高性能的應(yīng)用程序。從多線程中受益的評估方式。

作者簡介

  Thomas Hunter II為數(shù)十個企業(yè)級Node.js服務(wù)做出了貢獻(xiàn),并曾在一家致力于保障Node.js安全的公司工作。他在多個關(guān)于Node.js和JavaScript的會議上發(fā)表過演講,擁有JSNSD/JSNAD認(rèn)證,并且是NodeSchool SF的組織者。Bryan English是一位開源JavaScript和Rust程序員,他曾在大型企業(yè)系統(tǒng)、儀表盤和應(yīng)用安全方面工作過。作為Datadog的高級開源軟件工程師,Bryan是Node.js核心協(xié)作者,為多個工作組做出了貢獻(xiàn)。

圖書目錄

目錄
序 1
前言 3
目錄
第1 章 概述 9
1.1 什么是線程 11
1.2 并發(fā)性和并行性 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 命令調(diào)度器模式 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 章 共享內(nèi)存 95
4.1 共享內(nèi)存簡介 .96
4.1.1 瀏覽器中的共享內(nèi)存.96
4.1.2 在Node.js 中的共享內(nèi)存 . 100
4.2 SharedArrayBuffer 和TypedArrays 102
4.3 數(shù)據(jù)操作的原子方法 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 數(shù)據(jù)序列化 116
4.5.1 布爾值 116
4.5.2 字符串 118
4.5.3 對象 . 120
第5 章 高級共享內(nèi)存 121
5.1 原子協(xié)調(diào)方法 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 檢測線程準(zhǔn)備情況 129
5.3 示例應(yīng)用:康威生命游戲 . 132
5.3.1 單線程生命游戲 133
5.3.2 多線程生命游戲 139
5.4 原子和事件 146
第6 章 多線程模式 149
6.1 線程池 . 149
6.1.1 線程池的大小 . 150
6.1.2 調(diào)度策略 152
6.1.3 應(yīng)用實例 153
6.2 互斥鎖:一個基本的鎖 161
6.3 用環(huán)形緩沖器處理數(shù)據(jù)流 . 167
6.4 演員模型. 176
6.4.1 模式差異 177
6.4.2 與JavaScript 的關(guān)聯(lián) 178
6.4.3 示例實現(xiàn) 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 低內(nèi)存限制 . 206
8.1.2 低核心數(shù) 209
8.1.3 容器與線程 . 213
8.2 何時使用. 213
8.3 注意事項. 219
附錄 結(jié)構(gòu)化克隆算法 223

本目錄推薦

掃描二維碼
Copyright ? 讀書網(wǎng) ranfinancial.com 2005-2020, All Rights Reserved.
鄂ICP備15019699號 鄂公網(wǎng)安備 42010302001612號