簡體   English   中英

C ++ 0x線程

[英]C++0x threading

隨着新的C ++標准(C ++ 0x)的STL中的線程設施的出現,更改使用POSIX線程甚至Windows線程使用STL線程的現有代碼會更好嗎?

您可以隨時對沖您的賭注...編寫您自己的簡單線程API,它足以完成您的應用程序需要完成的任務,並更改您的代碼以僅針對您的線程API。 然后,您可以使用Windows或Posix或STL或其他任何方式實現自定義線程API的內部,並在需要時更改實現,而無需每次都觸及整個代碼庫。

通過這樣做,你可以從STL實現開始,然后如果事實證明,例如Windows使用它有一個難以解決的問題,你可以在my_threading_api.cpp中包含一個備用的Windows-API實現(里面)一個#ifdef WIN32),你將重新開始營業。

很大程度上取決於您對可移植性的關注程度,以及您利用本機API可能提供的功能,而標准庫沒有這些功能。 標准庫線程與POSIX非常相似(至少是隨便的)我不會想到你會因為使用POSIX而獲得多少(並且由於相似性,移植使用標准庫通常應該非常簡單)。

Windows線程是不同的,你更有可能遇到使用標准庫移植到一些非常重要的東西,即使最好移植也可能是非平凡的。

除非你確實需要,否則不要改變。 我假設您現有的代碼運行良好。

沒有人知道通常支持C ++ 0x庫功能需要多長時間,所以答案很可能取決於你可能希望與特定編譯器綁定的方式。 您可能還需要考慮在本機或C ++ 0x庫實現之上工作的框架或庫,例如Boost ThreadsIntel Threading Building Blocks,並讓該庫處理它是否使用C ++ 0x的詳細信息功能或平台API。

這取決於。

C ++ 0x線程尚未得到廣泛支持(我認為GCC實現了它,但MSVC沒有,我不知道他們何時計划添加該支持,但我可能會懷疑他們認為它是低優先級特征)

如果您的代碼按原樣運行,為什么要更改它? 對於新的C ++應用程序,並假設編譯器支持,我會使用C ++ 0x線程,因為它們是標准的,並且它是比Win32或POSIX線程更好的API。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM