2013-02-28 44 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线程库,我不知道,但它不应该离它太远。