在安裝MinGW-w64工具鏈時,我選擇了Win32線程模型,因爲它提供的性能優於POSIX。我沒有資格自己對此聲明進行基準測試,但here's a source for it。使用Win32線程模型時,MinGW-w64是否支持std :: thread開箱即用?
起初我以爲這個選項只會影響到GCC運行時的內部運作,而不是阻止我用我的代碼C++ 11個線程,基於this answer和this comment同胞用戶rubenvb。
但是,這似乎並非如此。在這個MinGW-w64安裝中,std::thread
支持似乎不存在。
我正在從命令行調用g ++,除-std=c++11
之外沒有選項。
在這一點上,我不知道:
- rubenvb是錯誤的,它實際上是必要的POSIX線程模型下安裝的MinGW-W64,以編譯我的代碼,它取決於C++ 11
thread
庫,或; - 我完全誤解了一切,或者;
std::thread
實際上在我的場景中得到了支持,它只是不直觀。
我強化標題中的「開箱即用」部分。存在名爲mingw-std-threads的庫,如this answer中所示。但是,作爲第三方的選擇,它與這個問題無關。
因此,從今天(2016年5月)開始,MinGW-w64 nativelly是否支持std::thread
取決於代碼,與Win32內部線程模型一起安裝?
安裝mingw-std-threads鏈接到,工作並需要大約30秒 –
@ M.M ...感謝您的建議,我已經這樣做了。然而,這個問題主要是出於好奇/ canonicity的緣故。信息似乎在不同來源之間出現分歧。 –
我的回答和我的評論都不對。它們是在mingw-std-threads庫不可用的時候編寫的(至少我不知道它)。其內部線程模型設置爲win32的GCC不支持C++ 11線程功能。我與你聯繫的答案正是這樣說的。另一方面,我的評論並不提及C++ 11線程支持。相反,它使用以win32/posix構建的GCC作爲其內部線程模型來處理調用pthread或win32線程相關函數,所有這些都可以像預期的那樣工作。這是兩個非常不同的話題。 – rubenvb