pthread 예제

나는 pthreads가 스레드 라이브러리의 특히 좋은 구현이라고 주장하지 않을 것이지만, 이것은 vxWorks, pSOS, Micrium, eCos 및 기억할 수없는 1/2 다스 다른 OSEs로 작업하는 것이 내 편견입니다. Pthreads는 여러 가지 면에서 일종의 구피입니다. 위의 간단한 예는 스레드의 작동 방식을 보여 주는 간단한 예제입니다. 스레드에서 전역 변수에 액세스하는 것은 일반적으로 좋지 않습니다. 스레드 2가 스레드 1보다 우선 순위가 있고 스레드 1이 변수를 변경해야 하는 경우 는 무엇입니까? 실제로 여러 스레드에서 전역 변수에 액세스해야 하는 경우 뮤텍스를 사용하여 액세스해야 합니다. 이것은 멋진 예이지만, 진짜 문제는 모든 인텔리전스가 “pthread.h”파일에 있다는 것입니다. […] : 또한 나는 Câ€의 pthreads에서 예제를 복사했습니다” 최소한의 작업 예제를 실행하고 실행하려고하지만 pthread_join에서 동일한 오류가 있습니다 […] 작업 예제를 만들었지만 런타임에 아무런 이점을 제공하지 는 않지만 그 반대입니다. pthread를 사용하여 스레드를 만들 때 실행을 시작하려면 함수를 가리킬 필요가 있습니다. 함수는 void *를 반환하고 단일 void * 인수를 가져가야 합니다. 예를 들어 함수가 정수 인수를 수행하려면 정수의 주소를 전달하고 나중에 참조해야 합니다. 이것은 복잡하게 들릴 지 모르지만 아래그림과 같이 매우 간단합니다.

예제 함수 시그니처는 무효*my_entry_function(void *param); 스레드를 올바르게 사용하는 방법을 아는 것은 모든 컴퓨터 과학 및 엔지니어링 학생 레퍼토리의 일부가 되어야 합니다. 이 자습서는 POSIX(이식 가능한 운영 체제 인터페이스) 스레드 또는 pthreads를 사용하여 다중 스레드 프로그래밍에 익숙해지도록 돕기 위한 시도입니다. 이 자습서에서는 pthread 라이브러리에서 정의한 다양한 도구를 설명하고, 이를 사용하는 방법을 보여 주며, 실제 프로그래밍 문제를 해결하기 위해 이러한 도구를 사용하는 예제를 제공합니다. pthread 라이브러리를 사용하는 더 많은 예제는 여기에서 찾을 수 있습니다. Pthreads API의 몇 가지 기능은 이 자습서에서 다루지 않습니다. 다음은 아래에 나열되어 있습니다. 자세한 내용은 Pthread 라이브러리 루틴 참조 섹션을 참조하십시오. 위에서 언급했듯이 전역 및 정적 변수가 있는 여러 스레드를 표시하는 C 프로그램은 모든 스레드가 데이터 세그먼트를 공유합니다. 전역 및 정적 변수는 데이터 세그먼트에 저장됩니다.

따라서 모든 스레드에서 공유 됩니다. 다음 예제 프로그램은 동일한 것을 보여 줍니다. 스레드에서 제공하는 기능을 최대한 활용하려면 표준화된 프로그래밍 인터페이스가 필요했습니다. UNIX 시스템의 경우 이 인터페이스는 IEEE POSIX 1003.1c 표준(1995)에 의해 지정되었습니다. 이 표준을 준수하는 구현을 POSIX 스레드 또는 Pthread라고 합니다. 이제 대부분의 하드웨어 공급업체는 독점 스레드 외에 Pthread를 제공합니다. 이 예제에서는 `x64` 구성을 시도했지만 pthread_join에 문제가 있습니까? U는 x64 빌드와 pthread를 실행하는 방법을 말해 줄 수 있습니까? 다음은 스레드된 응용 프로그램의 최소 예제입니다. x와 y라는 두 개의 숫자를 만들고 두 번째 스레드를 만듭니다.

첫 번째 스레드는 y값을 100으로 가지는 동안 y를 증가하지만 두 번째 스레드는 동시에 100의 값을 가지게 될 때까지 x씩 증가합니다. 이 작업이 완료되면 두 번째 스레드를 주 프로그램과 다시 조인하고 결과를 인쇄합니다.