JavaScript多執行緒編程實踐

JavaScript多執行緒編程實踐

《JavaScript多執行緒編程實踐》是2023年中國電力出版社出版的圖書。

基本介紹

  • 中文名:JavaScript多執行緒編程實踐
  • 出版時間:2023年12月1日
  • 出版社:中國電力出版社
  • ISBN:9787519883416
內容簡介,作者簡介,目錄,

內容簡介

本書主要討論了構建多執行緒套用的兩種方法:一種是使用訊息傳遞,另一種是使用共享記憶體。你將學習實現每種方法的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

相關詞條

熱門詞條

聯絡我們