리눅스 멀티 스레드 예제

다음 게시물: Linux IP 라우팅 기본 사항 소개 (1부) 이러한 스레드의 실행을 조정하는 것은 공유 데이터 구조에 대한 액세스를 동기화하여 프로그램의 상대속도에 관계없이 프로그램이 잘 실행되고 결정적임을 보장합니다. 구성 요소 스레드를 실행합니다. 단일 스레드 프로그램과 같은 다중 스레드 프로그램은 외부 세계와의 예외 및 상호 작용을 처리해야 합니다. 이러한 프로그램에는 많은 동시 활동이 있을 수 있지만 프로그램 전체가 이러한 외부 입력에 깔끔하게 응답해야 합니다. @steve 안녕하세요 스티브, 당신에게 귀중한 의견을 주셔서 감사합니다. 당신이 통지에 가져 온 두 가지 포인트는 리눅스 스레드의 진행 중인 시리즈의 다음 부분에서 다룰 것입니다. 이 부분은 스레드가 어떻게 살아 있는지에 대한 작은 개요를 제공하기위한 것이었기 때문에 의도적으로 `pthread_exit()`와이 부분의 `sleep()` 함수에 집중하지 않았습니다. 후속 부분은 레이어를 벗겨내고 `pthread_exit()`와 sleep()을 사용하지 않아야 하는 이유 등을 포함한 더 깊은 측면에 초점을 맞출 것입니다. 이 문서에서는 스레드를 만들고 식별하는 방법에 중점을 둡니다. 또한 기본 스레드 프로그래밍을 수행하는 방법을 설명하는 작업 C 프로그램 예제도 제공합니다. 리눅스 스레드 시리즈: 부품 1, 부품 2 (이 문서), 부품 3.

이 장에서는 이론, 구문 및 예제가 있는 GCC Linux의 C 언어 스레딩에 대해 알아봅니다. 여기서 설명하는 대부분의 항목은 비 Linux 시스템에 적용되어야 하며(다소 느슨하게) 비 POSIX 시스템에 적용되어야 합니다. 이 자습서에서는 Linux OS에서 작업하고 있으며 POSIX를 사용하여 다중 스레드 C++ 프로그램을 작성할 것이라고 가정합니다. POSIX 스레드 또는 Pthreads는 FreeBSD, NetBSD, GNU/Linux, Mac OS X 및 Solaris와 같은 많은 유닉스와 유사한 POSIX 시스템에서 사용할 수 있는 API를 제공합니다. 사용자 수준 라이브러리, 커널 및 다양한 조합을 포함하는 스레드가 구현되는 방법에는 여러 가지가 있습니다. 대부분의 Linux 구현은 현재 각 스레드를 복제 시스템 호출을 사용하여 만든 별도의 프로세스로 처리합니다(각 스레드는 해당 코호트와 주소 공간을 공유합니다). Linux에서 스레드의 최신 구현은 다른 접근 방식을 사용합니다. 다른 버전의 UNIX는 여전히 다른 접근 방식을 사용합니다. 우리는 POSIX 스레드의 새로운 기능과 함께 그들 모두를 논의합니다. 이 용어는 Solaris에서 특정하지만 관련기술적 의미를 취하지만 스레드는 경량 프로세스라고도 합니다. Linux에 사용할 수 있는 많은 POSIX 스레드 라이브러리가 있으며 일부는 POSIX 를 준수하려고 시도하지 않습니다.

또한 일부 POSIX 스레드 라이브러리는 표준의 초기 초안 또는 표준의 일부만 준수합니다. 최종 POSIX 표준을 준수하지 않는 모든 것은 경우에 따라 다른 동작을 표시하거나 약간 다른 함수 호출을 가질 수 있습니다. 즉, 이러한 좋은 멀티 스레딩 라이브러리되지 않습니다 말하는 것이 아니다, 하지만 당신은 당신이 사용하는 것을 알고 있어야합니다. 멀티 스레딩에 대한 POSIX 표준이 있습니다: 1003.1c. 당신은 휴대용 프로그램을 작성하려는 경우 (나에게 나쁜 생각처럼 보이지 않는), 그것은 비 POSIX 준수 라이브러리를 사용하거나 리누스가 너무 친절하게 리눅스 커널에 제공 원시 시스템 호출을 사용하는 것보다이 표준에 충실하는 것이 현명 할 것이다 (에 대한 나는 주 말을 st 조금 더 나중에). 아마도 리눅스를 사용 하는 이유 중 하나는 멀티 태스킹 운영 체제 이기 때문에. 이 경우 당신은 아마 잘 한 번에 하나 이상의 일을 할 수있는 유틸리티를 알고 있습니다 – 아마도 당신의 상사에게 사직서를 편집하는 동안 당신에게 명성과 재산을 가져올 것이다 유틸리티를 컴파일.

다음 게시물: Linux IP 라우팅 기본 사항 소개 (1부) 이러한 스레드의 실행을 조정하는 것은 공유 데이터 구조에 대한 액세스를 동기화하여 프로그램의 상대속도에 관계없이 프로그램이 잘 실행되고 결정적임을 보장합니다. 구성 요소 스레드를 실행합니다. 단일 스레드 프로그램과 같은 다중 스레드 프로그램은 외부 세계와의 예외 및 상호 작용을 처리해야 합니다. 이러한 프로그램에는 많은 동시 활동이 있을 수 있지만 […] , 2019