我與多線程的邂逅是在畢業(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++和多線程的熱愛,希望你也能感受得到。