Contact Us  
    Today
     
    03 8671 0111

c언어 pthread 예제

pthread를 사용하여 스레드를 만들 때 실행을 시작하려면 함수를 가리킬 필요가 있습니다. 함수는 void *를 반환하고 단일 void * 인수를 가져가야 합니다. 예를 들어 함수가 정수 인수를 수행하려면 정수의 주소를 전달하고 나중에 참조해야 합니다. 이것은 복잡하게 들릴 지 모르지만 아래그림과 같이 매우 간단합니다. 예제 함수 시그니처는 무효*my_entry_function(void *param); 작업 예제를 만들었지만 런타임에 아무런 이점을 제공하지 는 않지만 그 반대입니다. 여기에 내 메이크 파일입니다 : CC = 팔 리눅스 – gnueabihf-gcc CFLAGS = -pthread -정적 예는 좋은 악마입니다. 다중 스레딩은 복잡한 주제입니다. 간단한 그림을 사용하면 메커니즘을 이해하는 데 도움이됩니다. 제공된 코드 예제는 관찰을 실제 코드와 관련시켜 이해를 높이는 데 도움이 됩니다. pthread_cond_signal의 중요한 점은 CV에서 잠자는 스레드가 있는 경우 적어도 하나가 깨어나서 뮤텍스를 잠그고 논리 조건을 다시 확인하는 것입니다. 권장 사항: IF 문 대신 WHILE 루프를 사용하여 기다렸다가 대기한 상태를 확인하면 컴파일: cc-pthread mutex1.c(또는 이전 의 경우 cc-lpthread mutex1.c)와 같은 몇 가지 잠재적인 문제를 처리하는 데 도움이 될 수 있습니다. 라이브러리를 명시적으로 참조하는 GNU 컴파일러 버전) 실행: ./a.out 결과: `x64` 구성으로 시도했지만 pthread_join에 문제가 있는 이 예제 U는 x64 빌드와 pthread를 실행하는 방법을 말해 줄 수 있습니까? 이 예제는 완전히 나쁘다! 이 방법으로 뮤텍스를 사용하면 스레드를 쓸모없이 만들 수 있습니다! 나는 pthreads가 스레드 라이브러리의 특히 좋은 구현이라고 주장하지 않을 것이지만, 이것은 vxWorks, pSOS, Micrium, eCos 및 기억할 수없는 1/2 다스 다른 OSEs로 작업하는 것이 내 편견입니다. Pthreads는 여러 가지 면에서 일종의 구피입니다.

이 장에서는 이론, 구문 및 예제가 있는 GCC Linux의 C 언어 스레딩에 대해 알아봅니다. C에서 멀티 스레딩 프로그램을 작성할 수 있습니까? Java와 달리 멀티스레딩은 언어 표준에서 지원되지 않습니다. POSIX 스레드(또는 Pthread)는 스레드에 대한 POSIX 표준입니다. pthread의 구현은 gcc 컴파일러에서 사용할 수 있습니다. pthread 기본 함수의 사용을 보여 주는 간단한 C 프로그램은 아래 프로그램은 pthread 라이브러리가 있는 C 컴파일러로만 컴파일할 수 있습니다. int main (int argc, char** argv) { int i, n; n = 2; //증가 값 n 더 많은 동시 요청을 시뮬레이션 pthread_tid[n]; int deposit_ammount[n]; 나는이 예제를 읽은 후 스레드, Mutexes에 완전히 새로운, 나는 MUTEX의 기본 및 사용 사례를 얻었다. 이 지식으로, 나는 다른 Mutex 응용 프로그램을 이해할 수 있다고 생각합니다. @engeland: 전역 변수를 사용하는 것이 잘못된 이유는 무엇입니까? 프로그래머가 나쁜 관행이라고 해서 뮤텍스로 보호할 수 있는 리소스의 나쁜 예가 아니라는 의미는 아닙니다. 히만슈가 정적 변수를 사용해야 하는가? 그는 할 수 있지만 다음 초보자에게 더 이해할 수있는 코드가 될 것인가? 아니요.

그리고 이것이 예제의 핵심입니다. 가능한 한 간단하게 만드십시오. 다른 한편으로는 전역 변수가 잘못된 프로그래밍 습관이라고 언급되었을 수도 있습니다.

Accredited with:

excellence and integrity

JHL Civil Pty Ltd ABN 79144 907 514, 10A Phillip Court, Port Melbourne, Victoria (VIC), 3207 Australia
© Copyright JHL Civil 2013