또한 메인 끝에 수면() 기능이 있습니다. 스레드에 5 초 이상 걸리는 긴 작업이 있으면 main이 끝나고 주 스레드가 작업자 스레드를 만들어 UB로 인해 프로그램이 충돌 할 수 있습니다. pthread 기본 함수의 사용을 보여 주는 간단한 C 프로그램은 아래 프로그램은 pthread 라이브러리가 있는 C 컴파일러로만 컴파일할 수 있습니다. 멀티스레딩이 왜 해야 합니까? 스레드는 병렬 처리를 통해 응용 프로그램을 개선하는 데 널리 사용됩니다. 예를 들어 브라우저에서 여러 탭은 서로 다른 스레드일 수 있습니다. MS 워드는 여러 스레드, 하나의 스레드를 사용하여 텍스트의 서식을 지정하고 다른 스레드를 사용하여 입력을 처리합니다. 스레드는 다음과 같은 이유로 인해 프로세스보다 빠르게 작동합니다: 1) 스레드 생성이 훨씬 빠릅니다. 2) 스레드 간의 컨텍스트 전환이 훨씬 빠릅니다. 3) 스레드는 쉽게 종료 할 수 있습니다 4) 스레드 간의 통신이 빠릅니다. 스레드/프로세스는 한 번에 여러 코드 세그먼트를 실행할 수 있는 메커니즘이며 스레드가 동시에 실행되는 것처럼 보입니다.
커널은 비동기적으로 일정을 조정하여 각 스레드를 수시로 중단하여 다른 사용자가 실행할 수 있는 기회를 제공합니다. 위의 함수가 두 스레드 의 ID를 취하고 두 스레드 의 두 개의 스레드 가 같거나 그렇지 않으면 0을 반환하는 경우 비영값을 반환한다는 것을 알 수 있습니다. 한 대상에서 동시에 여러 작업을 수행하는 것은 매우 위험하며 데이터베이스에 대한 가장 좋은 예입니다. 세 스레드가 동시에 단일 파일을 작성하려는 경우 하드 드라이브가 CPU만큼 빠르게 진행될 수 없기 때문에 문제가 될 수 있습니다. 이 경우 파일을 손상시킬 수있는 작업으로 하드 드라이브에 과부하가 걸리지 않도록 다른 스레드를 잠가야합니다. 뮤텍스는 다른 스레드를 잠그는 데 사용할 수 있습니다. /tmp/ccGoGiGt.o: 함수 `main`에서 pthread.c:(.text+0×55): `pthread_create` pthread.c:(.text+0×91)에 대한 정의되지 않은 참조: `pthread_join`에 대한 정의되지 않은 참조: 스레드 안전 라이브러리 함수를 사용하고 있는지 확인하는 것도 좋습니다. 좋은 SO 질문과 대답 : stackoverflow.com/questions/125957 … pthread_create 함수는 스레드를 만들기 위해 호출됩니다.
그것은 스레드 설명자, void 함수에 대한 포인터 및 여기에 설명하지 않을 다른 매개 변수인 pthread_t가 필요합니다.