c 멀티스레드 예제

By agosto 2, 2019Sem categoria

작업 예제를 만들었지만 런타임에 아무런 이점을 제공하지 는 않지만 그 반대입니다. […] : 또한 나는 Câ€의 pthreads에서 예제를 복사했습니다” 최소한의 작업 예제를 실행하고 실행하려고하지만 pthread_join에서 동일한 오류가 있습니다 […] 멀티스레딩이 왜 해야 합니까? 스레드는 병렬 처리를 통해 응용 프로그램을 개선하는 데 널리 사용됩니다. 예를 들어 브라우저에서 여러 탭은 서로 다른 스레드일 수 있습니다. MS 워드는 여러 스레드, 하나의 스레드를 사용하여 텍스트의 서식을 지정하고 다른 스레드를 사용하여 입력을 처리합니다. 스레드는 다음과 같은 이유로 인해 프로세스보다 빠르게 작동합니다: 1) 스레드 생성이 훨씬 빠릅니다. 2) 스레드 간의 컨텍스트 전환이 훨씬 빠릅니다. 3) 스레드는 쉽게 종료 할 수 있습니다 4) 스레드 간의 통신이 빠릅니다. pthread를 사용하여 스레드를 만들 때 실행을 시작하려면 함수를 가리킬 필요가 있습니다. 함수는 void *를 반환하고 단일 void * 인수를 가져가야 합니다.

예를 들어 함수가 정수 인수를 수행하려면 정수의 주소를 전달하고 나중에 참조해야 합니다. 이것은 복잡하게 들릴 지 모르지만 아래그림과 같이 매우 간단합니다. 예제 함수 시그니처는 무효*my_entry_function(void *param); […] http://timmurphy.org/2010/05/04/pthreads-in-c-a-minimal-working-example/ & #8211; c에서 스레드를 만들 […] 이 예제에서는 `x64` 구성을 시도했지만 pthread_join에 문제가 있습니까? U는 x64 빌드와 pthread를 실행하는 방법을 말해 줄 수 있습니까? 이것은 멋진 예이지만, 진짜 문제는 모든 인텔리전스가 “pthread.h”파일에 있다는 것입니다. 호기심에 대 한, 로렌스 리버 모어 국립 연구소는 더 많은 배경및 pthreads에서 사용할 수 있는 다양 한 기능을 사용할 수 있습니다 이유의 예제와 함께이 문서: computing.llnl.gov/tutorials/pthre… 다음은 스레드된 응용 프로그램의 최소 예제입니다. x와 y라는 두 개의 숫자를 만들고 두 번째 스레드를 만듭니다. 첫 번째 스레드는 y값을 100으로 가지는 동안 y를 증가하지만 두 번째 스레드는 동시에 100의 값을 가지게 될 때까지 x씩 증가합니다. 이 작업이 완료되면 두 번째 스레드를 주 프로그램과 다시 조인하고 결과를 인쇄합니다. 두 번째 스레드에 의해 x가 변경되었음에도 불구하고 기본 프로그램도 변경되었습니다. 한 대상에서 동시에 여러 작업을 수행하는 것은 매우 위험하며 데이터베이스에 대한 가장 좋은 예입니다.

세 스레드가 동시에 단일 파일을 작성하려는 경우 하드 드라이브가 CPU만큼 빠르게 진행될 수 없기 때문에 문제가 될 수 있습니다. 이 경우 파일을 손상시킬 수있는 작업으로 하드 드라이브에 과부하가 걸리지 않도록 다른 스레드를 잠가야합니다. 뮤텍스는 다른 스레드를 잠그는 데 사용할 수 있습니다. 위에서 언급했듯이 전역 및 정적 변수가 있는 여러 스레드를 표시하는 C 프로그램은 모든 스레드가 데이터 세그먼트를 공유합니다. 전역 및 정적 변수는 데이터 세그먼트에 저장됩니다. 따라서 모든 스레드에서 공유 됩니다. 다음 예제 프로그램은 동일한 것을 보여 줍니다. 위의 간단한 예는 스레드의 작동 방식을 보여 주는 간단한 예제입니다. 스레드에서 전역 변수에 액세스하는 것은 일반적으로 좋지 않습니다. 스레드 2가 스레드 1보다 우선 순위가 있고 스레드 1이 변수를 변경해야 하는 경우 는 무엇입니까? 실제로 여러 스레드에서 전역 변수에 액세스해야 하는 경우 뮤텍스를 사용하여 액세스해야 합니다.

이 장에서는 이론, 구문 및 예제가 있는 GCC Linux의 C 언어 스레딩에 대해 알아봅니다. 참고: 이 예제에서는 개수가 조건으로 사용되며 교착 상태를 일으키지 않고 while 문에서 잠글 수 없기 때문에 경합 조건이 많이 있습니다. ° C++ STL(표준 템플릿 라이브러리) 목록 pthread_join을 사용하여 연결된 목록의 예는 현재 스레드 프로세스를 다른 스레드에 연결하는 데 사용됩니다.