반응형

Visual Studio 2019에서 pthread 사용하는 방법을 다룹니다.



2021. 1. 4   최초작성



1. 아래 링크에서 pthreads-w32-2-9-1-release.zip를 다운로드 합니다. 

http://sourceware.org/pub/pthreads-win32/ 




2. 압축을 풀어서 Pre-built.2 폴더 이름을 pthread로 바꾼 후, C:\에 복사합니다. 


 




3. 새 프로젝트 만들기를 클릭합니다. 





4. Windows 데스크톱 마법사를 클릭하고 다음 버튼을 클릭합니다. 





5. 프로젝트 이름을 적은 후, 만들기를 클릭합니다. 





6. 애플리케이션 종류로 콘솔 애플리케이션을 선택한 후, 추가 옵션에서 빈 프로젝트를 체크한 후, 확인 버튼을 클릭합니다. 





7. 소스파일을 선택하고 마우스 우클릭하여 메뉴에서 추가 > 새 항목을 클릭합니다. 





8. C++ 파일을 선택한 후, 이름에 소스파일 이름을 적고 추가 버튼을 클릭합니다. 





9.  툴바의 솔루션 플랫폼을  x64로 변경합니다. 





10. 메뉴에서 프로젝트 > 속성을 선택합니다. 




11. 구성을 모든 구성으로 변경합니다. 





12. 왼쪽에서 디버깅을 선택하고 오른쪽 환경 항목에 다음 값을 입력합니다. 


PATH=C:\pthread\dll\x64;%PATH%





13. 왼쪽에서 C/C++을 선택하고 오른쪽 추가 포함 디렉터리 항목에 다음 값을 입력합니다. 


C:\pthread\include





14. 왼쪽 항목에서 링커를 선택하고 오른쪽 추가 라이브러리 디렉터리 항목에 다음 값을 입력합니다. 


C:\pthread\lib\x64





15. 구성을 Debug로 변경합니다. 





16. 예를 클릭합니다. 





17. 왼쪽에서 링커 > 입력을 선택하고 오른쪽 추가 종속성 항목의 맨 앞에 다음 값을 추가합니다.  


pthreadVC2.lib;





18. 구성을 Release로 변경합니다. 





19. 예를 클릭합니다. 





20. 왼쪽에서 링커 > 입력을 선택하고 오른쪽 추가 종속성 항목의 맨 앞에 다음 값을 추가하고 확인 버튼을 클릭합니다. 


pthreadVC2.lib;





21.  실행시켜보면 다음과 같은 결과를 얻을 수 있습니다. 


메인 함수에서 0 스레드 생성

메인 함수에서 1 스레드 생성

스레드 0입니다.

메인 함수에서 2 스레드 생성

스레드 1입니다.

메인 함수에서 3 스레드 생성

스레드 2입니다.

메인 함수에서 4 스레드 생성

스레드 3입니다.

스레드 4입니다.


// 코드 출처 - https://computing.llnl.gov/tutorials/pthreads/

#define HAVE_STRUCT_TIMESPEC
#include <pthread.h>
#include <stdio.h>
#include <stdlib.h>

#define NUM_THREADS     5

void* PrintHello(void* threadid)
{
    long tid;
    tid = (long)threadid;
    printf("스레드 %ld입니다.\n", tid);
    pthread_exit(0);

    return NULL;
}

int main(int argc, char* argv[])
{
    pthread_t threads[NUM_THREADS];
    int rc;
    long t;
    for (t = 0; t < NUM_THREADS; t++) {
        printf("메인 함수에서 %ld 스레드 생성\n", t);
        rc = pthread_create(&threads[t], NULL, PrintHello, (void*)t);
        if (rc) {
            printf("ERROR - pthread_create() %d\n", rc);
            exit(-1);
        }
    }

    return 0;
}




반응형

포스트 작성시에는 문제 없었지만 이후 문제가 생길 수 있습니다.
질문을 남겨주면 가능한 빨리 답변드립니다.

여러분의 응원으로 좋은 컨텐츠가 만들어집니다.
지금 본 내용이 도움이 되었다면 유튜브 구독 부탁드립니다. 감사합니다 ~~

유튜브 구독하기


제가 쓴 책도 한번 검토해보세요 ^^

+ Recent posts