2013-02-28 47 views
2

我在Windows上創建Visual Studio 2012 Express中的跨平臺軟件。由於顯而易見的原因,我無法使用.NET的System::Threading::Thread。我希望能夠使用C11的新線程特性(threads.h,而不是pthread.h),而使用VS2012是因爲我創建了一個基於.NET窗體的抽象框架。我開始相信Windows是不可能的。有人有一個想法。如果這些是我唯一的選擇,我將只使用C++庫(boost和std)。Windows上的C11線程

有人知道該怎麼辦嗎?

+0

Visual Studio通常不支持C,除了它與C++共享的那些功能。如果有的話,我認爲他們不會很快支持它。 – 2013-02-28 17:41:03

+3

據我所知,C11線程庫沒有在MSVC中實現。 (他們仍然有辦法符合C99標準。)由於您使用的是VS2012,因此您可以使用[C++ 11線程庫](http://en.cppreference.com/w/cpp/)線程)哪些*是*可供您使用。 – 2013-02-28 17:42:39

+0

你可能是對的。 – JMRC 2013-02-28 17:46:15

回答

8

的Visual Studio 2012不支持C11的線程(微軟一再表示,它在保持當前與C,寧願把重點放在C++興趣不大),但它確實支持 C++ 11的std::thread and related facilities。如果你正在編寫C++,那麼你應該使用它來代替C的線程庫。

+2

+1注意到OP提到的C11而不是C++ 11。我會回答,如果OP是錯誤的C++ 11線程支持在Visual C++中... – 2013-02-28 18:01:46

+0

謝謝,我贊成C11的原因是未來與C兼容,如果我曾決定提高性能。但是std確實有很多好處。 – JMRC 2013-02-28 18:09:49

+2

「與C的未來兼容性,如果我決定提高性能」......嗯?編寫得很好的C++可以和C一樣.C和C++不是一個性能(至少不是現代編譯器),而是編程風格和方法論。 – 2013-02-28 18:11:51

0

C11線程接口大部分都是從Dikumware的線程接口中複製到它們的propretary線程庫中。 AFAIR他們的東西運行在不同的平臺上,他們已經創建了該接口作爲Windows線程和POSIX線程功能的交集。

不管他們現在是否擁有「官方」C11線程庫,我不知道,但它不應該離它太遠。