linux thread 예제

스레드가 자체 스레드 ID를 알고 자하는 경우 다른 경우가 발생할 수 있습니다. 이 경우 다음 함수는 원하는 서비스를 제공합니다. 스레드 및 기타 항목의 ACE(ADAPTIVE 통신 환경) 오픈 소스 프레임워크 보기를 다룹니다. 조건 변수는 pthread_cond_t 형식의 변수이며 대기 및 나중에 프로세스 연속을 위한 적절한 함수와 함께 사용됩니다. 조건 변수 메커니즘을 사용하면 스레드가 실행을 일시 중단하고 일부 조건이 true가 될 때까지 프로세서를 포기할 수 있습니다. 한 스레드가 대기를 준비하는 한 스레드와 첫 번째 스레드가 실제로 대기하기 전에 조건을 신호할 수 있는 다른 스레드가 교착 상태를 생성하기 위해 조건 변수를 항상 뮤텍스와 연결해야 합니다. 스레드는 전송되지 않는 신호를 영구적으로 기다리고 있습니다. 모든 뮤텍스를 사용할 수 있으며 뮤텍스와 조건 변수 사이에 명시적 링크가 없습니다. 컴파일: cc -pthread mutex1.c (또는 라이브러리를 명시적으로 참조 하는 GNU 컴파일러의 이전 버전에 대 한 cc-lpthread mutex1.c) 실행: ./a.out 결과: /tmp/ccGoGiGt.o: 함수 `main`에서: pthread.c:(.text+0x55): `pthread_에 대한 정의되지 않은 참조 create` pthread.c:(.text+0x91): `pthread_join`에 대한 정의되지 않은 참조 자습서는 Pthread를 사용하기 위한 개념, 동기 및 디자인 고려 사항에 대한 소개로 시작됩니다. PthreadAPI의 세 가지 주요 루틴 클래스는 스레드 관리, 뮤텍스 변수 및 조건 변수의 세 가지 주요 클래스를 다룹니다. 예제 코드는 새 Pthread 프로그래머가 필요로 하는 대부분의 Pthread 루틴을 사용하는 방법을 보여 주기 위해 전체적으로 사용됩니다. 이 튜토리얼은 LLNL 세부 사항 및 pthreads와 MPI를 혼합하는 방법에 대한 논의로 끝납니다. 수많은 예제 코드(C 언어)가 포함된 랩 연습도 포함되어 있습니다.

새 생성된 스레드의 스레드 ID를 저장하는 데 사용되는 pthread_t 변수에 대한 포인터입니다. 프로그램 위의 컴파일하는 방법? gcc를 사용하여 다중 스레드 프로그램을 컴파일하려면 pthreads 라이브러리와 연결해야합니다. 다음은 프로그램을 컴파일하는 데 사용되는 명령입니다. 스레드/프로세스는 한 번에 여러 코드 세그먼트를 실행할 수 있는 메커니즘이며 스레드가 동시에 실행되는 것처럼 보입니다. 커널은 비동기적으로 일정을 조정하여 각 스레드를 수시로 중단하여 다른 사용자가 실행할 수 있는 기회를 제공합니다. 스레드 라이브러리는 세 가지 동기화 메커니즘을 제공합니다: 스레드 특성을 설정하는 데 사용되는 스레드 특성 개체에 대한 포인터이며 NULL을 사용하여 기본 인수가 있는 스레드를 만들 수 있습니다. 스레드 ID는 `pthread_t` 유형으로 표시됩니다. 이미 설명했듯이 대부분의 경우 이 형식은 구조이므로 두 스레드 IS를 비교할 수 있는 함수가 있어야 합니다. 위의 함수가 두 스레드 의 ID를 취하고 두 스레드 의 두 개의 스레드 가 같거나 그렇지 않으면 0을 반환하는 경우 비영값을 반환한다는 것을 알 수 있습니다. 나는 당신이 당신의 노동자 / 배경 스레드에서 NULL을 반환하는 것으로 나타났습니다. 인수를 반환하지 않으므로 pthread_exit(NULL) NULL이어야 합니다. 이렇게 하면 스레드가 종료되기 전에 몇 가지 사항을 정리해야 합니다.

이 루틴은 스레드를 죽입니다. pthread_exit() 함수는 반환되지 않습니다. 스레드가 분리되지 않은 경우 pthread_join()를 사용하여 스레드 ID 및 반환 값을 다른 스레드에서 검사할 수 있습니다. 참고 : 반환 포인터 *retval, 그렇지 않으면 스레드가 종료되면 존재를 중단 할 로컬 범위의 해서는 안됩니다. 자세한 내용은 http://www.personal.kent.edu/~rmuhamma/OpSystems/Myos/threads.htm 참조하십시오. 또는 주 끝에 pthread_exit(NULL)를 사용할 수 있습니다. 따라서 주 스레드가 작업자 스레드를 종료하지 않고 완료됩니다. 작업자 스레드는 아무 문제없이 완료됩니다.

그러나 제어 된 방식으로 프로그램을 종료 할 수 있도록 pthread_join()을 권장합니다. 공유 메모리 멀티프로세서 아키텍처에서 스레드를 사용하여 병렬 처리를 구현할 수 있습니다.