Pthreads는 스레드 생성 및 동기화를 위한 API를 정의하는 POSIX 표준(IEEE 1003.1c)을 나타냅니다. 이는 구현이 아닌 스레드 동작의 사양을 정의합니다. 사양은 운영 체제 설계자가 원하는 방식으로 구현할 수 있습니다. 결과적으로 많은 시스템이 Pthreads 사양을 구현합니다. 대부분은 Linux, Mac OS X 및 Solaris를 포함한 UNIX 유형 시스템입니다. Windows는 기본적으로 Pthread를 지원하지 않지만 일부 타사 Windows 구현을 사용할 수 있습니다. 그림 4.9에 표시된 C 프로그램은 별도의 스레드에서 음이 아닌 정수의 합계를 계산하는 다중 스레드 프로그램을 구축하기 위한 기본 Pthreads API를 보여줍니다. Pthreads 프로그램에서는 별도의 스레드가 지정된 함수에서 실행을 시작합니다. 아래 프로그램에서 이는 runer() 함수입니다. 이 프로그램이 시작되면 별도의 제어 스레드가 main()에서 시작됩니다. 그런 다음 main()은 몇 가지 초기화 후에 runer() 함수에서 제어를 시작하는 두 번째 스레드를 만듭니다. 두 스레드는 전역 데이터 합계를 공유합니다.
#include<pthread.h> #include<stdio.h> int sum; /* this sum data is shared by the thread(s) */ /* threads call this function */ void *runner(void *param); int main(int argc, char *argv[]){ pthread t tid; /* the thread identifier */ /* set of thread attributes */ pthread attr t attr; if (argc != 2){ fprintf(stderr,"usage: a.out </p><p>"); return -1; } if (atoi(argv[1]) < 0){ fprintf(stderr,"%d must be >= 0</p><p>",atoi(argv[1])); return -1; } /* get the default attributes */ pthread attr init(&attr); /* create the thread */ pthread create(&tid,&attr,runner,argv[1]); /* wait for the thread to exit */ pthread join(tid,NULL); printf("sum = %d</p><p>",sum); } /* The thread will now begin control in this function */ void *runner(void *param){ int i, upper = atoi(param); sum = 0; for (i = 1; i <= upper; i++) sum += i; pthread exit(0); }
Pthreads API를 사용하는 멀티스레드 C 프로그램.
위 내용은 POSIX 스레드 라이브러리의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!