Haskell並行與並發編程

Haskell並行與並發編程
定價:354
NT $ 308
 

內容簡介

馬洛編著的《Haskell並行與並發編程》深入淺出地介紹如何使用Haskell語言及相關的庫和框架編寫並行和並發程序。

《Haskell並行與並發編程》用兩個部分分別講解並行Haskell編程和並發Haskell編程。

根據編程模型的不同,並行部分介紹了3種並行編程方式:基於惰性求值的並行(Eval Monad及求值策略)、基於數據流的並行(Par Monad)以及面向大規模數組算法的並行(Repa數據並行編程和Acellerate GPU編程)。並發部分則按抽象層次由低到高分別涉及線程和MVar、重疊I/O、線程的取消和超時、軟件事務內存、高級並發抽象、並發網絡服務程序、使用線程並行編程和分布式編程等,最后還介紹調試、性能調優以及外部函數接口。書中包含大量可運行的代碼示例,並附有詳細的注釋,讀者通過親身運行、修改和調試代碼,可極大地加深對書中內容的理解。

《Haskell並行與並發編程》適合有一定Haskell語言基礎的程序員或者對並行或並發編程感興趣的相關人員閱讀。
 

目錄

第1章 緒論
1.1 術語:並行性和並發性
1.2 工具和資源
1.3 示例代碼
第一部分 並行Haskell
第2章 並行基礎:Eval Monad
2.1 惰性求值和弱首范式
2.2 Eval monad、rpar和rseq
2.3 示例:並行化數獨解算器
2.4 Deepseq
第3章 求值策略
3.1 參數化策略
3.2 列表並行求值策略
3.3 示例:K均值問題
3.3.1 並行化K均值問題求解
3.3.2 性能和分析
3.3.3 spark活動可視化
3.3.4 粒度
3.4 spark垃圾回收與投機並行
3.5 使用parBuffer並行化惰性流
3.6 分塊策略
3.7 恆等性
第4章 數據流並行:Par Monad
4.1 示例:圖中的最短路徑
4.2 流水線並行
4.2.1 生產者限速
4.2.2 流水線並行的局限性
4.3 示例:會議時間表
4.4 示例:並行類型推斷器
4.5 使用不同的調度器
4.6 Par monad和策略的對比
第5章 Repa數據並行編程
5.1 數組、形狀和索引
5.2 數組運算
5.3 示例:計算最短路徑
5.4 折疊和形狀多態
5.5 示例:圖像旋轉
5.6 小結
第6章 Acellerate GPU編程
6.1 概述
6.2 數組和索引
6.3 運行簡單Accelerate計算
6.4 標量數組
6.5 數組索引
6.6 在Acc中創建數組
6.7 數組配對
6.8 常數
6.9 示例:最短路徑
6.9.1 在GPU上運行
6.9.2 調試CUDA后端
6.10 示例:Mandelbrot集生成器
第二部分 並發Haskell
第7章 並發基礎:線程和MVar
7.1 簡單的示例:提醒器
7.2 通信:MVar
7.3 MVar用作簡單通道:日志服務
7.4 MVar用作共享狀態的容器
7.5 MVar用作構件單元:界通道
7.6 公正性
第8章 重疊I/O
8.1 Haskell中的異常
8.2 Async的錯誤處理
8.3 合並
第9章 線程的取消和超時
9.1 異步異常
9.2 異步異常的屏蔽
9.3 bracket操作
9.4 通道的異步異常安全
9.5 超時
9.6 異步異常的捕獲
9.7 mask和forkIO
9.8 關於異步異常的討論
第10章 軟件事務內存
10.1 運行示例:窗口管理
10.2 阻塞
10.3 阻塞直到發生變化
10.4 STM的合並
10.5 Async的重實現
10.6 通道的STM實現
10.6.1 更多可能的操作
10.6.2 阻塞操作的復合
10.6.3 異步異常安全
10.7 通道的另一種實現
10.8 有界通道
10.9 STM的適用性
10.10 性能
10.11 小結
第11章 高級並發抽象
11.1 線程泄漏的避免
11.2 對稱並發組合子
11.3 添加函子實例
11.4 小結:Async API
第12章 並發網絡服務程序
12.1 簡易服務器
12.2 包含狀態的簡易服務器
12.2.1 設計一:單一全局鎖
12.2.2 設計二:每條服務線程一個通道
12.2.3 設計三:使用廣播通道
12.2.4 設計四:使用STM
12.2.5 實現
12.3 聊天服務器
12.3.1 架構
12.3.2 客戶數據
12.3.3 服務器數據
12.3.4 服務器
12.3.5 設置新客戶
12.3.6 運行客戶處理
12.3.7 小結
第13章 使用線程並行編程
13.1 如何通過並發實現並行
13.2 示例:文件搜索
13.2.1 串行版本
13.2.2 並行版本
13.2.3 性能和伸縮性
13.2.4 使用信號量限制線程數量
13.2.5 ParIO monad
第14章 分布式編程
14.1 distributed-process及相關軟件包
14.2 分布式是並發還是並行?
14.3 第一個示例:ping
14.3.1 進程和Process Monad
14.3.2 定義消息類型
14.3.3 Ping服務進程
14.3.4 主進程
14.3.5 main函數
14.3.6 Ping示例小結
14.4 多節點ping
14.4.1 單機運行多節點
14.4.2 多機運行
14.5 有類型通道
14.6 故障處理
14.7 分布式聊天服務器
14.7.1 數據類型
14.7.2 發送消息
14.7.3 廣播
14.7.4 分布式處理
14.7.5 測試服務器
14.7.6 故障以及增刪節點
14.8 練習:分布式鍵值存儲
第15章 調試、性能調整以及外部函數接口
15.1 並發程序調試
15.1.1 查看線程狀態
15.1.2 記錄事件日志和ThreadScope
15.1.3 死鎖檢測
15.2 並發(和並行)程序的調優
15.2.1 創建線程和Mvar操作
15.2.2 共享並發數據結構
15.2.3 RTS選項的調整
15.3 並發和外部函數接口
15.3.1 線程和外部對外調用
15.3.2 異步異常和外部調用
15.3.3 線程和外部對內調用
網路書店 類別 折扣 價格
  1. 新書
    87
    $308