鍍金池/ 教程/ C/ 前言
3.4 本章總結(jié)
6.3 基于鎖設(shè)計更加復(fù)雜的數(shù)據(jù)結(jié)構(gòu)
6.1 為并發(fā)設(shè)計的意義何在?
5.2 <code>C++</code>中的原子操作和原子類型
A.7 自動推導(dǎo)變量類型
2.1 線程管理的基礎(chǔ)
8.5 在實踐中設(shè)計并發(fā)代碼
2.4 運行時決定線程數(shù)量
2.2 向線程函數(shù)傳遞參數(shù)
第4章 同步并發(fā)操作
2.3 轉(zhuǎn)移線程所有權(quán)
8.3 為多線程性能設(shè)計數(shù)據(jù)結(jié)構(gòu)
6.4 本章總結(jié)
7.3 對于設(shè)計無鎖數(shù)據(jù)結(jié)構(gòu)的指導(dǎo)建議
關(guān)于這本書
A.1 右值引用
2.6 本章總結(jié)
D.2 &lt;condition_variable&gt;頭文件
A.6 變參模板
6.2 基于鎖的并發(fā)數(shù)據(jù)結(jié)構(gòu)
4.5 本章總結(jié)
A.9 本章總結(jié)
前言
第10章 多線程程序的測試和調(diào)試
5.4 本章總結(jié)
第9章 高級線程管理
5.1 內(nèi)存模型基礎(chǔ)
2.5 識別線程
第1章 你好,C++的并發(fā)世界!
1.2 為什么使用并發(fā)?
A.5 Lambda函數(shù)
第2章 線程管理
4.3 限定等待時間
D.3 &lt;atomic&gt;頭文件
10.2 定位并發(fā)錯誤的技術(shù)
附錄B 并發(fā)庫的簡單比較
5.3 同步操作和強制排序
A.8 線程本地變量
第8章 并發(fā)代碼設(shè)計
3.3 保護共享數(shù)據(jù)的替代設(shè)施
附錄D C++線程庫參考
第7章 無鎖并發(fā)數(shù)據(jù)結(jié)構(gòu)設(shè)計
D.7 &lt;thread&gt;頭文件
D.1 &lt;chrono&gt;頭文件
4.1 等待一個事件或其他條件
A.3 默認函數(shù)
附錄A 對<code>C++</code>11語言特性的簡要介紹
第6章 基于鎖的并發(fā)數(shù)據(jù)結(jié)構(gòu)設(shè)計
封面圖片介紹
7.2 無鎖數(shù)據(jù)結(jié)構(gòu)的例子
8.6 本章總結(jié)
8.1 線程間劃分工作的技術(shù)
4.2 使用期望等待一次性事件
8.4 設(shè)計并發(fā)代碼的注意事項
D.5 &lt;mutex&gt;頭文件
3.1 共享數(shù)據(jù)帶來的問題
資源
9.3 本章總結(jié)
10.3 本章總結(jié)
10.1 與并發(fā)相關(guān)的錯誤類型
D.4 &lt;future&gt;頭文件
3.2 使用互斥量保護共享數(shù)據(jù)
9.1 線程池
1.1 何謂并發(fā)
9.2 中斷線程
4.4 使用同步操作簡化代碼
A.2 刪除函數(shù)
1.3 C++中的并發(fā)和多線程
1.4 開始入門
第5章 C++內(nèi)存模型和原子類型操作
消息傳遞框架與完整的ATM示例
8.2 影響并發(fā)代碼性能的因素
7.1 定義和意義
D.6 &lt;ratio&gt;頭文件
A.4 常量表達式函數(shù)
7.4 本章總結(jié)
1.5 本章總結(jié)
第3章 線程間共享數(shù)據(jù)

前言

我與多線程的邂逅是在畢業(yè)后的第一份工作中。那時我們正在寫一個填充數(shù)據(jù)庫的程序。不過,需要處理的數(shù)據(jù)量很大,每條記錄都是獨立的,并且需要在插入數(shù)據(jù)庫之前,對數(shù)據(jù)量進行合理分配。為了充分利用10核UltraSPARC CPU(Ultra Scalable Processor ARChitecture,終極可擴充處理器架構(gòu)(大端)),我們使用了多線程,每個線程處理自己所要記錄的數(shù)據(jù)。我們使用C++和POSIX線程庫完成編碼,也犯了一些錯誤——當時,多線程對于我們來說是一個新事物——不過,最后我們還是完成了。也是在做這個項目的時候,我開始注意C++標準委員會和剛剛發(fā)布的C++標準。

我對多線程和并發(fā)有著濃厚的興趣。雖然,別人覺得多線程和并發(fā)難用、復(fù)雜,還會讓代碼出現(xiàn)各種各樣的問題,不過,在我看來這是一種強有力的工具,能讓你充分使用硬件資源,讓你的程序運行的更快。

從那以后,我開始使用多線程和并發(fā)在單核機器上對應(yīng)用性能和響應(yīng)時間進行改善。這里,多線程可以幫助你隱藏一些耗時的操作,比如I/O操作。同時,我也開始學(xué)習在操作系統(tǒng)級別上使用多線程,并且了解Intel CPU如何處理任務(wù)切換。

同時,對C++的興趣讓我與ACCU有了聯(lián)系,之后是BSI(英國標準委員會)中的C++標準委員會,還有Boost。也是因為興趣的原因,我參與了Boost線程庫的初期開發(fā)工作,雖然初期版本已經(jīng)被開發(fā)者們放棄,但是我抓住了這次機會。直到現(xiàn)在,我依然是Boost線程庫的主要開發(fā)者和維護者。

作為C++標準委員會的一員,對現(xiàn)有標準的缺陷的和不足進行改善,并為新標準提出建議(新標準命名為C++0x是希望它能在2009年發(fā)布,不過最后因為2011年才發(fā)布,所以官方命名為C++11)。我也參與很多BSI的工作,并且我也為自己的建議起草建議書。當委員會將多線程提上C++標準的日程時,我高興得差點飛起來,因為我起草及合著的多線程和并發(fā)相關(guān)的草案,將會成為新標準的一部分。新標準將我(計算機相關(guān))的兩大興趣愛好——C++和多線程——結(jié)合起來,想想還有點小激動。

本書旨在教會其他C++開發(fā)者如何安全、高效地使用C++11線程庫。我對C++和多線程的熱愛,希望你也能感受得到。