>백엔드 개발 >C++ >POSIX 스레드 라이브러리

POSIX 스레드 라이브러리

王林
王林앞으로
2023-08-25 16:29:06895검색

POSIX 스레드 라이브러리

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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 tutorialspoint.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제