2013-02-28 3 views
2

Windows 용 Visual Studio 2012 Express에서 크로스 플랫폼 소프트웨어를 만들고 있습니다. 명백한 이유 때문에 .NET의 System::Threading::Thread을 사용할 수 없습니다. VS2012를 사용하는 동안 C11 (threads.h, 아니 pthread.h)의 새로운 스레딩 기능을 사용할 수 있기를 기대했지만, .NET 양식을 기반으로 추상 프레임 워크를 만들었습니다. Windows에서는 불가능하다고 생각하기 시작했습니다. 누군가 아이디어를 가지고 있습니까? 그것들이 유일한 옵션이라면 나는 C++ 라이브러리 (boost와 std)만을 사용할 것이다.Windows의 C11 스레드

할 일을 아는 사람이 있습니까?

+0

Visual Studio는 C++와 공유하는 기능을 제외하고 일반적으로 C를 지원하지 않습니다. 그리고 나는 그들이 언제든지 지원할 계획이라고 생각하지 않습니다. –

+3

내가 아는 한, C11 스레딩 라이브러리는 MSVC에서 구현되지 않습니다. (그들은 여전히 ​​C99 준수를위한 방법이 있습니다.) VS2012를 사용하고 있기 때문에 [C++ 11 스레딩 라이브러리] (http://en.cppreference.com/w/cpp/)를 사용하면 훨씬 더 나은 행운을 얻을 수 있습니다. 스레드) * 사용할 * 수 있습니다. –

+0

아마 맞을 것입니다. – JMRC

답변

8

비주얼 스튜디오 2012 C11의 스레딩을 지원하지 않습니다 (마이크로 소프트는 C++에 초점을 선호 C와 현재의 유지에 거의 관심을 가지고 반복적으로 주장했다)하지만 지원 C++ (11)의 std::thread and related facilities 않습니다. C++을 쓰고 있다면 틀림없이 C의 스레딩 라이브러리 대신 어쨌든 사용해야 할 것입니다.

+2

+1을 언급 한 OP는 C11이고 C++은 그렇지 않습니다. 나는 OP가 C++ 11 스레딩 지원에 대해 Visual C++에서 잘못된 것처럼 응답했을 것입니다 ... –

+0

감사합니다. C11과의 향후 호환성을 위해 C11을 선호하는 이유는 성능을 높이기로 결정한 경우입니다. 하지만 std 실제로 많은 장점이 있습니다. – JMRC

+2

"성능을 향상 시키기로 결정한 경우 C와의 향후 호환성"... ... 응? 잘 작성된 C++은 C만큼 성능이 뛰어날 수 있습니다. C vs. C++는 성능 컴파일러가 아니며 (적어도 최신 컴파일러에서는 그렇지 않습니다) 프로그래밍 스타일 및 방법론에 관한 것입니다. –

0

C11 스레드 인터페이스는 대부분 Dikumware의 스레드 인터페이스에서 보류 스레드 라이브러리로 복사되었습니다. AFAIR 그들의 물건은 다른 플랫폼에서 실행되며 Windows 스레드와 POSIX 스레드의 기능이 교차하는 인터페이스를 만들었습니다.

"공식적인"C11 스레드 라이브러리인지 여부는 모르겠지만 멀리 떨어져 있으면 안됩니다.