c 멀티 스레드 예제

호기심에 대 한, 로렌스 리버 모어 국립 연구소는 더 많은 배경및 pthreads에서 사용할 수 있는 다양 한 기능을 사용할 수 있습니다 이유의 예제와 함께이 문서: computing.llnl.gov/tutorials/pthre… 이 장에서는 이론, 구문 및 예제가 있는 GCC Linux의 C 언어 스레딩에 대해 알아봅니다. 위에서 언급했듯이 전역 및 정적 변수가 있는 여러 스레드를 표시하는 C 프로그램은 모든 스레드가 데이터 세그먼트를 공유합니다. 전역 및 정적 변수는 데이터 세그먼트에 저장됩니다. 따라서 모든 스레드에서 공유 됩니다. 다음 예제 프로그램은 동일한 것을 보여 줍니다. 한 대상에서 동시에 여러 작업을 수행하는 것은 매우 위험하며 데이터베이스에 대한 가장 좋은 예입니다. 세 스레드가 동시에 단일 파일을 작성하려는 경우 하드 드라이브가 CPU만큼 빠르게 진행될 수 없기 때문에 문제가 될 수 있습니다. 이 경우 파일을 손상시킬 수있는 작업으로 하드 드라이브에 과부하가 걸리지 않도록 다른 스레드를 잠가야합니다. 뮤텍스는 다른 스레드를 잠그는 데 사용할 수 있습니다. 위의 간단한 예는 스레드의 작동 방식을 보여 주는 간단한 예제입니다.

스레드에서 전역 변수에 액세스하는 것은 일반적으로 좋지 않습니다. 스레드 2가 스레드 1보다 우선 순위가 있고 스레드 1이 변수를 변경해야 하는 경우 는 무엇입니까? 실제로 여러 스레드에서 전역 변수에 액세스해야 하는 경우 뮤텍스를 사용하여 액세스해야 합니다. pthread 라이브러리를 사용하는 더 많은 예제는 여기에서 찾을 수 있습니다. 스레드를 올바르게 사용하는 방법을 아는 것은 모든 컴퓨터 과학 및 엔지니어링 학생 레퍼토리의 일부가 되어야 합니다. 이 자습서는 POSIX(이식 가능한 운영 체제 인터페이스) 스레드 또는 pthreads를 사용하여 다중 스레드 프로그래밍에 익숙해지도록 돕기 위한 시도입니다. 이 자습서에서는 pthread 라이브러리에서 정의한 다양한 도구를 설명하고, 이를 사용하는 방법을 보여 주며, 실제 프로그래밍 문제를 해결하기 위해 이러한 도구를 사용하는 예제를 제공합니다. 멀티스레딩이 왜 해야 합니까? 스레드는 병렬 처리를 통해 응용 프로그램을 개선하는 데 널리 사용됩니다. 예를 들어 브라우저에서 여러 탭은 서로 다른 스레드일 수 있습니다. MS 워드는 여러 스레드, 하나의 스레드를 사용하여 텍스트의 서식을 지정하고 다른 스레드를 사용하여 입력을 처리합니다. 스레드는 다음과 같은 이유로 인해 프로세스보다 빠르게 작동합니다: 1) 스레드 생성이 훨씬 빠릅니다. 2) 스레드 간의 컨텍스트 전환이 훨씬 빠릅니다.

3) 스레드는 쉽게 종료 할 수 있습니다 4) 스레드 간의 통신이 빠릅니다. 이러한 메서드는 사소한 차이점과 매우 유사합니다. 나는 각 방법과 다음에 그들의 차이점을 설명합니다. 그 이름 lock_guard에 의해 두려워하지 마십시오. 중요한 섹션을 만드는 더 추상적인 방법일 뿐입니다. THREAD 특성을 설정하는 데 사용되는 스레드 특성 개체에 대한 포인터이며 NULL을 사용하여 기본 인수가 있는 스레드를 만들 수 있습니다. 스레드는 공통 주소 공간을 공유하므로 여러 프로세스의 많은 비효율성을 피할 수 있습니다. C는 처음에 매우 무서운 언어가 될 수 있지만 너무 매혹적이다, 나는 당신이이 기사를 읽고 즐겼다 😄 또는 당신은 std::async를 사용하여 작업을 만들고 std::future에서 반환 값을 얻을 수 있습니다. 태스크는 함수 포인터, 펑터 또는 람다 함수를 사용할 수도 있습니다. 즉, 스레드는 경합 조건을 피하기 위해 공유 메모리 및 리소스(예: 파일)를 읽나 쓸 때 주의해야 합니다.

프로세스와 스레드의 차이점은 무엇입니까? 스레드는 다른 스레드가 코드 섹션, 데이터 섹션 및 열린 파일 및 신호와 같은 OS 리소스와 공유하기 때문에 다른 프로세스와 독립적이지 않습니다. 그러나 프로세스와 마찬가지로 스레드에는 자체 프로그램 카운터(PC), 레지스터 집합 및 스택 공간이 있습니다. fork()는 호출 프로세스의 두 번째 복사본을 생성합니다.

admin