Windows上的C11线程
我在Windows上创建Visual Studio 2012 Express中的跨平台软件。由于显而易见的原因,我无法使用.NET的System::Threading::Thread
。我希望能够使用C11的新线程特性(threads.h
,而不是pthread.h
),而使用VS2012是因为我创建了一个基于.NET窗体的抽象框架。我开始相信Windows是不可能的。有人有一个想法。如果这些是我唯一的选择,我将只使用C++库(boost和std)。Windows上的C11线程
有人知道该怎么办吗?
的Visual Studio 2012不支持C11的线程(微软一再表示,它在保持当前与C,宁愿把重点放在C++兴趣不大),但它确实支持 C++ 11的std::thread and related facilities。如果你正在编写C++,那么你应该使用它来代替C的线程库。
+1注意到OP提到的C11而不是C++ 11。我会回答,如果OP是错误的C++ 11线程支持在Visual C++中... – 2013-02-28 18:01:46
谢谢,我赞成C11的原因是未来与C兼容,如果我曾决定提高性能。但是std确实有很多好处。 – JMRC 2013-02-28 18:09:49
“与C的未来兼容性,如果我决定提高性能”......嗯?编写得很好的C++可以和C一样.C和C++不是一个性能(至少不是现代编译器),而是编程风格和方法论。 – 2013-02-28 18:11:51
C11线程接口大部分都是从Dikumware的线程接口中复制到它们的propretary线程库中。 AFAIR他们的东西运行在不同的平台上,他们已经创建了该接口作为Windows线程和POSIX线程功能的交集。
不管他们现在是否拥有“官方”C11线程库,我不知道,但它不应该离它太远。
Visual Studio通常不支持C,除了它与C++共享的那些功能。如果有的话,我认为他们不会很快支持它。 – 2013-02-28 17:41:03
据我所知,C11线程库没有在MSVC中实现。 (他们仍然有办法符合C99标准。)由于您使用的是VS2012,因此您可以使用[C++ 11线程库](http://en.cppreference.com/w/cpp/)线程)哪些*是*可供您使用。 – 2013-02-28 17:42:39
你可能是对的。 – JMRC 2013-02-28 17:46:15