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

JavaScript多線程編程實(shí)踐

JavaScript多線程編程實(shí)踐

定 價(jià):¥78.00

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

購(gòu)買這本書(shū)可以去


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

內(nèi)容簡(jiǎn)介

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

作者簡(jiǎn)介

  Thomas Hunter II為數(shù)十個(gè)企業(yè)級(jí)Node.js服務(wù)做出了貢獻(xiàn),并曾在一家致力于保障Node.js安全的公司工作。他在多個(gè)關(guān)于Node.js和JavaScript的會(huì)議上發(fā)表過(guò)演講,擁有JSNSD/JSNAD認(rèn)證,并且是NodeSchool SF的組織者。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ū)目錄

目錄
序 1
前言 3
目錄
第1 章 概述 9
1.1 什么是線程 11
1.2 并發(fā)性和并行性 13
1.3 單線程的JavaScript .15
1.4 隱藏的線程 18
1.5 C 語(yǔ)言中的線程:用快樂(lè)幣致富 . 20
1.5.1 僅用一個(gè)主線程 21
1.5.2 使用4 個(gè)工作線程 .24
第2 章 瀏覽器 29
2.1 專用worker .30
2.1.1 專用worker 的Hello World 30
2.1.2 專用worker 的高級(jí)用法 .34
2.2 共享worker .36
2.2.1 共享worker 的Hello World 38
2.2.2 共享worker 的高級(jí)用法 .44
2.3 service worker .47
2.3.1 service worker 的Hello World 49
2.3.2 service worker 的高級(jí)概念 .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 再次看快樂(lè)幣(Happycoin)這個(gè)程序 .79
3.3.1 單線程版本 80
3.3.2 四個(gè)線程的版本 82
3.4 帶有Piscina 的worker 池 .85
3.5 一個(gè)完整的池化快樂(lè)幣的例子 90
第4 章 共享內(nèi)存 95
4.1 共享內(nèi)存簡(jiǎn)介 .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 原子性問(wèn)題 112
4.5 數(shù)據(jù)序列化 116
4.5.1 布爾值 116
4.5.2 字符串 118
4.5.3 對(duì)象 . 120
第5 章 高級(jí)共享內(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 時(shí)間和不確定性 . 125
5.2.1 不確定性的例子 125
5.2.2 檢測(cè)線程準(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)用實(shí)例 153
6.2 互斥鎖:一個(gè)基本的鎖 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 示例實(shí)現(xiàn) 179
第7 章 WebAssembly . 189
7.1 你的第一個(gè)WebAssembly .190
7.2 WebAssembly 中的原子操作 192
7.3 用Emscripten 將C 程序編譯成WebAssembly 194
7.4 其他WebAssembly 編譯器 196
7.5 AssemblyScript 197
7.6 AssemblyScript 中的快樂(lè)幣 199
第8 章 分析 . 205
8.1 何時(shí)不使用 205
8.1.1 低內(nèi)存限制 . 206
8.1.2 低核心數(shù) 209
8.1.3 容器與線程 . 213
8.2 何時(shí)使用. 213
8.3 注意事項(xiàng). 219
附錄 結(jié)構(gòu)化克隆算法 223

本目錄推薦

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