리눅스 pthread 예제

DEVC ++ 컴파일러에서 위의 코드를 실행하려고 하면 다음과 같은 오류가 발생합니다… 1)- [링커 오류] `_imp__pthread_self`에 대한 정의되지 않은 참조 2)- [링커 오류] `_imp__pthread_equal`에 대한 정의되지 않은 참조 3)- [링커 오류] `_imp__pthread_create` 4)-ld 반환 된 1 엑시트 상태 수준/필수 구성 조건: 이 튜토리얼은 pthreads와 병렬 프로그래밍을 새로운 사람들을 위해 이상적입니다. C에서 병렬 프로그래밍에 대한 기본적인 이해가 필요합니다. 일반적으로 병렬 프로그래밍에 익숙하지 않은 경우 EC3500: 병렬 컴퓨팅 소개에 포함된 자료가 도움이 될 것입니다. int pthread_create(pthread_t*제한 tidp, const pthread_attr_t *제한 attr, void *(*start_rtn), 보이드 *제한 아르그) 또한 명확성을 위해 라이브러리 -lpthread에 대해 링크하여 올바르게 빌드하도록 제공된 예제를 추가해야 합니다. 이 장에서는 이론, 구문 및 예제가 있는 GCC Linux의 C 언어 스레딩에 대해 알아봅니다. pthread_create()는 스레드 생성 요청의 결과를 지정하는 오류 코드를 반환합니다. 스레드가 성공적으로 생성되면 0을 반환합니다. 여기서 스레드 생성에 실패하면 오류 코드를 반환하여 오류를 지정합니다.

strerror())를 사용하여 오류 세부 정보를 얻을 수 있습니다. 조건 변수는 pthread_cond_t 형식의 변수이며 대기 및 나중에 프로세스 연속을 위한 적절한 함수와 함께 사용됩니다. 조건 변수 메커니즘을 사용하면 스레드가 실행을 일시 중단하고 일부 조건이 true가 될 때까지 프로세서를 포기할 수 있습니다. 한 스레드가 대기를 준비하는 한 스레드와 첫 번째 스레드가 실제로 대기하기 전에 조건을 신호할 수 있는 다른 스레드가 교착 상태를 생성하기 위해 조건 변수를 항상 뮤텍스와 연결해야 합니다. 스레드는 전송되지 않는 신호를 영구적으로 기다리고 있습니다. 모든 뮤텍스를 사용할 수 있으며 뮤텍스와 조건 변수 사이에 명시적 링크가 없습니다. 따라서 `pthread_self()` 함수가 스레드자체 스레드 ID를 인쇄하는 데 사용되는 것을 볼 수 있습니다. int 메인(int argc, char * argv[]){//인수는 명령줄 인수 int * retval; retval = (int *)malloc (4); pthread_t tid; pthread_attr_init(&attr); pthread_create(&tid,&attr), pthread_create,&argv *)&리트탈); printf(”retval은 %dn”, *retval입니다); } 다음 게시물: Linux IP 라우팅 기본 사항 소개 (1부) 컴파일: cc-pthread mutex1.c (또는 라이브러리를 명시적으로 참조하는 GNU 컴파일러의 이전 버전에 대한 cc -lpthread mutex1.c) 실행: ./a.out 결과: 이 루틴은 스레드를 죽입니다. pthread_exit() 함수는 반환되지 않습니다. 스레드가 분리되지 않은 경우 pthread_join()를 사용하여 스레드 ID 및 반환 값을 다른 스레드에서 검사할 수 있습니다.

참고 : 반환 포인터 *retval, 그렇지 않으면 스레드가 종료되면 존재를 중단 할 로컬 범위의 해서는 안됩니다. 또는 주 끝에 pthread_exit(NULL)를 사용할 수 있습니다. 따라서 주 스레드가 작업자 스레드를 종료하지 않고 완료됩니다. 작업자 스레드는 아무 문제없이 완료됩니다.