2010-10-25 62 views

回答

10

Visual C++ 2010不提供C++ 11線程支持或原子庫。

如果要在Visual C++ 2010中使用該代碼,則需要使用這些庫的第三方實現。一種選擇是just::thread;這不是免費的,但我有一個副本,我很滿意。

或者,您可以使用其他跨平臺線程庫,如Boost.Thread或OpenThreads或本地Windows線程庫之一。任何這些選項都可能需要更改代碼才能運行。

請注意,Visual C++ 11將支持這些庫,它們包含在Visual C++ 11 Beta中。

+0

和一個免費的相當於Boost.Thread和Boost.Atomic(非官方)。 – GManNickG 2010-10-25 07:11:32

+0

@GMan:True; Boost.Thread(據我所知)缺少的一個主要的東西等價於'std :: async',這是創建析構函數以來最偉大的東西。 – 2010-10-25 07:13:28

+0

是的,它確實有未來,所以它不是太遙不可及。 – GManNickG 2010-10-25 07:16:57

1

VC++支持特殊的嵌入式語法OpenMP(http://msdn.microsoft.com/en-us/library/tt15eb9t(VS.80).aspx) - 注意,g ++也是suports它,所以你可以得到跨平臺代碼。

+1

與OpenMP相關的問題如何? – CharlesB 2010-10-25 07:53:51

+1

@CharlesB - OpenMP將多線程期望的所有原語嵌入到語言級別,並且最終實現並行化執行的原子:原子,勢壘,關鍵和並行。答案有什麼問題?它涉及到VS ++,它解答瞭如何提供沒有第三方庫的多線程。 – Dewfy 2010-10-25 08:14:09

+1

以及問題中發佈的代碼與C++ 0x的線程庫有關,OpenMP沒有實現,因此我的評論。 – CharlesB 2010-10-25 09:38:54