2010-08-24 101 views
5

我還不是Boost用戶。不過,我正計劃儘快進入。 但是我很少關心Boost,以及未來可能的名稱與即將出現的C++ 0x的衝突或差異。 (也許這不是一個真正的問題,但是例如我覺得boost lambda語法非常難看,BOOST_FOREACH看起來兇狠,以及其他唯一的審美個人觀點)。Boost.Thread或just :: thread?

我真的很感興趣的TR2,這似乎是由庫Boost.Threadjust::thread實施。兩者似乎都是由安東尼威廉姆斯撰寫和維護的。

但just :: thread聲稱與TR2緊密相容。

我想知道你們中的任何一個人是否會指示我使用其中一種。 just ::線程不是免費的,但如果它真的就像TR2一樣,那麼我就會受到誘惑。

有沒有想法?

回答

5

目前我正在Linux上用boost,just ::線程庫和gcc g ++ 4.5編譯器的所謂「實驗性」C +​​+ Ox特性進行實驗。關於線程我已經按下了,我發現我寫的代碼只是:: thread和g ++編譯器是100%兼容的。 boost庫(1.43)與前兩者明顯不兼容。但是,對於我的生產代碼,我使用boost庫。

在boost,just :: thread和g ++編譯器中正確和明智地使用可用命名空間時,名稱衝突應該不成問題。使用C++ Ox g ++特性只需::線程就沒有問題;事實上,just :: thread建議使用這些特性,比如可變參數模板。

+0

你的意思是「boost庫(1.43)與前兩者明顯不兼容」。你在談論什麼樣的兼容性? – 2010-08-24 11:40:28

+0

@Stephane:'我編寫的代碼只是::線程和g ++編譯器100%兼容';代碼兼容,這意味着在C++ Ox下成功編譯和鏈接just :: thread的代碼將僅使用C++ Ox g ++ 4.5進行編譯和鏈接,無需修改。我一直無法實現與boost庫的兼容性。 – Sam 2010-08-26 12:51:07

+0

@thanx Sam。我仍然在猶豫,但這僅僅是:: thread的一個好處。 – 2010-08-26 13:12:23

4

我認爲現在說圖書館「就像TR2」還爲時過早。 TR2將在 C++ 0x之後發佈,它本身還沒有發佈。

但是,Boost.Thread庫也聲稱遵循標準化委員會的發展。

我更喜歡任何Boost庫在其「原始」,因爲Boost致力於高質量和Boost社區協作維護圖書館,而不是一個剛剛發生遷移到提升的私有庫。

您不必擔心名稱衝突,因爲當前位於boost::名稱空間中的名稱空間將保留在名稱空間中,並且所有TR2素材可能會轉到std::tr2::

-1
在這個時候

最好的建議 - 沒有上述:-)

除非你有絕對迫切需要的,你會被正在安排的C++ 0x自己節省了大量的時間和悲痛的第一個結算,這將需要約2年。如果有人要求你去追逐移動目標 - 首先要求看到錢:-)和一個大保留:-))

像在許多其他情況下,最好先問自己「我的實際需求是什麼」 ?如果它正在學習多線程開發,那麼花時間使用C#或Java將會容易得多。如果您需要開始開發生產級系統,那麼您已經知道您的目標平臺,並且您可以做的最好的事情就是堅持使用任何一種針對目標平臺上的多線程的試用版本,並且具有對調試器的全面支持。只需重複一次 - 全面的調試器支持和集成決定了您在線程域中的生活質量。

如果你碰Boost,確保你有足夠的時間確保它不依賴於其他十幾個boost-something文件,然後再打十幾個...除非你是afficionado :-)如果你觸摸libraty聲稱自動解鎖檢測準備在CPU週期內支付和處理可能不必要的干擾。