리눅스 thread 예제

리눅스 thread 예제
0 August 2, 2019

공유 메모리 멀티프로세서 아키텍처에서 스레드를 사용하여 병렬 처리를 구현할 수 있습니다. 지금까지 하드웨어 공급업체는 자체 적인 버전의 스레드를 구현하여 이식성을 소프트웨어 개발자에게 주어왔습니다. UNIX 시스템의 경우 IEEE POSIX 1003.1c 표준에 의해 표준화된 C 언어 스레드 프로그래밍 인터페이스가 지정되었습니다. 이 표준을 준수하는 구현을 POSIX 스레드 또는 Pthread라고 합니다. main() 시스템에서 스레드를 식별하는 데 사용되는 정수인 pthread_t 형식인 thread_id라는 변수를 선언합니다. thread_id를 선언한 후 pthread_create() 함수를 호출하여 스레드를 만듭니다. pthread_create()는 4개의 인수를 사용합니다. 첫 번째 인수는 이 함수에 의해 설정된 thread_id에 대한 포인터입니다. 두 번째 인수는 특성을 지정합니다. 값이 NULL이면 기본 특성이 사용됩니다. 세 번째 인수는 스레드를 만들 수 있도록 실행할 함수의 이름입니다. 네 번째 인수는 함수 myThreadFun에 인수를 전달하는 데 사용됩니다.

스레드에 대한 pthread_join() 함수는 프로세스에 대한 wait() 함수와 동일합니다. pthread_join에 대한 호출은 첫 번째 인수와 동일한 식별자를 가진 스레드가 종료될 때까지 호출 스레드를 차단합니다. 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입니다); } 그래서 우리는 함수 `pthread_self()`가 자체 스레드 ID를 인쇄하기 위해 스레드에서 사용되는 것을 볼 수 있습니다. 수준/필수 구성 조건: 이 자습서는 pthreads와 병렬 프로그래밍을 새로 접하는 사람들에게 이상적입니다. C에서 병렬 프로그래밍에 대한 기본적인 이해가 필요합니다. 일반적으로 병렬 프로그래밍에 익숙하지 않은 경우 EC3500: 병렬 컴퓨팅 소개에 포함된 자료가 도움이 될 것입니다. 스레드가 성공적으로 생성되면 반환 값은 0(0)이 되며 pthread_create는 형식 정수의 오류 번호를 반환합니다. 또한 명확성을 위해 올바르게 빌드하기 위해 주어진 예제에 대해 라이브러리 -lpthread에 대해 링크하도록 추가해야 합니다. 스레드 함수에 대한 포인터입니다. 이 함수에는 스레드에서 실행되는 코드 세그먼트가 포함되어 있습니다. THREAD 특성을 설정하는 데 사용되는 스레드 특성 개체에 대한 포인터이며 NULL을 사용하여 기본 인수가 있는 스레드를 만들 수 있습니다.

스레드 함수에 액세스하기 위해 포함해야 하는 헤더 파일프로세스ID를 통해 프로세스가 식별되는 것처럼 스레드는 스레드 ID로 식별됩니다. 그러나 흥미롭게도, 두 사이의 유사성은 여기에 끝납니다. 그것은 형식 void *의 스레드 함수 인수이며,이 매개 변수를 사용하여 함수에 필요한 것을 전달할 수 있습니다. 자세한 내용은 http://www.personal.kent.edu/~rmuhamma/OpSystems/Myos/threads.htm 참조하십시오. 스레드 및 기타 항목의 ACE(ADAPTIVE 통신 환경) 오픈 소스 프레임워크 보기를 다룹니다. 참고: 이 문서의 전체 설명은 Posix 스레드에서 수행됩니다. 형식에서 이해할 수 있는 것처럼 pthread_t 형식은 POSIX 스레드를 의미합니다. 응용 프로그램이 POSIX 스레드가 지원되는지 여부를 테스트하려는 경우 응용 프로그램은 컴파일 시간 테스트를 위해 매크로 _POSIX_THREADS를 사용할 수 있습니다. posix API에 대한 호출이 포함된 코드를 컴파일하려면 컴파일 옵션 `-pthread`를 사용하십시오.

pthread 기본 함수의 사용을 보여 주는 간단한 C 프로그램은 아래 프로그램은 pthread 라이브러리가 있는 C 컴파일러로만 컴파일할 수 있습니다. 안녕하세요, 스레드 ID는 구조가 될 수 있다고 언급했습니다. 그리고 당신은 또한 스레드 아이디를 비교할 수 있다고 언급했다. C에서 구조를 비교할 수 있습니까? 두 구조를 비교하려고 하면 구문 오류가 아닌가요? 출력에서 볼 수 있듯이 첫 번째 스레드가 만들어지고 처리를 시작한 다음 두 번째 스레드가 생성된 다음 처리를 시작합니다.

Posted by medmedia