Programing

Unix의 pthread.h를 Windows에서 컴파일 할 수 있습니까?

lottogame 2021. 1. 8. 07:43
반응형

Unix의 pthread.h를 Windows에서 컴파일 할 수 있습니까?


프로그램을 컴파일하려고하면

#include <pthread.h>

그것에 오류가 발생합니다.

pthread.h: No such file or directory

이것을 Windows 환경에서 컴파일 할 수 있습니까?

최신 MinGW와 함께 Vista를 사용하고 있습니다.

Unix 환경으로 이동해야하므로 UNIX 버전 3.5 용 Microsoft Windows 서비스를 사용하고 싶지 않습니다.


pthread.h스레드 용 Unix / Linux (POSIX) API의 헤더입니다. Cygwin과 같은 POSIX 레이어는 아마도 #include <pthreads.h>.

네이티브 Windows 스레딩 API는를 통해 노출되며 #include <windows.h>Linux의 스레딩과 약간 다르게 작동합니다.

그래도 http://sourceware.org/pthreads-win32/ 에서 유지 관리되는 대체 "접착제"라이브러리가 있습니다 . MinGW / VS와 약간의 비 호환성이 있습니다 (예 : 여기 참조 ).


@Ninefingers가 언급했듯이 pthread는 유닉스 전용입니다. 정말 Posix 만.

즉, Microsoft에는 pthread를 복제하는 라이브러리가 있습니다.

UNIX 용 Microsoft Windows 서비스 버전 3.5

도서관 다운로드


pthread.hWindows에 없습니다. 그러나 Windows에는 CreateThread로 시작하는 광범위한 스레딩 기능이 있습니다.

내 충고는 다른 시스템의 API 렌즈를 통해 WinAPI를 살펴보면 잡히지 않는다는 것입니다. 이러한 시스템은 다릅니다 . 편안한 Linux 자전거 좌석으로 Win32 자전거를 타야한다고 주장하는 것과 같습니다. 글쎄, 좌석이 맞지 않을 수도 있고 어떤 경우에는 그냥 떨어질 수도 있습니다.

스레드는 서로 다른 시스템에서 거의 동일하게 작동하며 ThreadPoolsmutexs가 있습니다. pthreadsWindows 스레드와 Windows 스레드 를 모두 사용 하면서 Windows 스레드가 제공하는 것보다 훨씬 더 많은 기능을 제공한다고 말할 수 있습니다 pthread.

다른 API를 배우는 것은 매우 쉽습니다. 개념 (뮤텍스 등)으로 생각한 다음 MSDN에서 그 중 하나를 만드는 방법을 찾으십시오.


TDM-GCC 64x 패키지를 선택하기 만하면됩니다. (MinGW 툴체인의 32 비트 및 64 비트 버전을 모두 포함하며 깔끔한 설치 프로그램에 포함되어 있습니다.) 더 중요한 것은 " winpthread "라이브러리 라는 것이 포함되어 있다는 것 입니다.

그것의 포함 pthread.h헤더 libwinpthread.a, libwinpthread.dll.a32 비트, 64 비트 및 요구 .dll을 모두 정적 라이브러리 libwinpthread-1.dlllibwinpthread_64-1.dll(이, 2016년 1월 6일 현재).

libwinpthread.a빌드하는 동안 라이브러리 에 연결해야합니다 . 그 외에는 코드가 Linux의 기본 Pthread 코드와 동일 할 수 있습니다. 지금까지 Windows에서 64 비트로 몇 가지 기본 Pthread 프로그램을 컴파일하는 데 성공적으로 사용했습니다.

또는 Windows 스레딩 API를 pthreads API로 래핑하는 다음 라이브러리를 사용할 수 있습니다. pthreads-win32 .

위의 두 가지가 가장 잘 알려진 방법 인 것 같습니다.

도움이 되었기를 바랍니다.


내가 기억하는 것처럼 Windows 용 gnu 도구 모음에는 mingw와 cygwin의 두 가지 배포판이 있습니다.

cygwin의 작업을 기대합니다. "stadard"posix 환경을 만들기 위해 많은 노력을 기울였습니다.

mingw 도구 모음은 런타임에 msvcrt.dll을 사용하므로 아마도 msvcrt의 "thread"api : _beginthread노출합니다.<process.h>

참조 URL : https://stackoverflow.com/questions/2150938/can-i-get-unixs-pthread-h-to-compile-in-windows

반응형