Comunidad Empresarial Dinamiza

 
 
  • No hay categorías

 
No te pierdas...
 

 
Publicado 02/08/2019 por admin en
 
 

c 쓰레드 예제

C에서 멀티 스레딩 프로그램을 작성할 수 있습니까? Java와 달리 멀티스레딩은 언어 표준에서 지원되지 않습니다. POSIX 스레드(또는 Pthread)는 스레드에 대한 POSIX 표준입니다. pthread의 구현은 gcc 컴파일러에서 사용할 수 있습니다. 한 대상에서 동시에 여러 작업을 수행하는 것은 매우 위험하며 데이터베이스에 대한 가장 좋은 예입니다. 세 스레드가 동시에 단일 파일을 작성하려는 경우 하드 드라이브가 CPU만큼 빠르게 진행될 수 없기 때문에 문제가 될 수 있습니다. 이 경우 파일을 손상시킬 수있는 작업으로 하드 드라이브에 과부하가 걸리지 않도록 다른 스레드를 잠가야합니다. 뮤텍스는 다른 스레드를 잠그는 데 사용할 수 있습니다. 프로세스와 스레드의 차이점은 무엇입니까? 스레드는 다른 스레드가 코드 섹션, 데이터 섹션 및 열린 파일 및 신호와 같은 OS 리소스와 공유하기 때문에 다른 프로세스와 독립적이지 않습니다. 그러나 프로세스와 마찬가지로 스레드에는 자체 프로그램 카운터(PC), 레지스터 집합 및 스택 공간이 있습니다. 이 장에서는 이론, 구문 및 예제가 있는 GCC Linux의 C 언어 스레딩에 대해 알아봅니다. 스레드란 무엇입니까? 스레드는 프로세스 내의 단일 시퀀스 스트림입니다. 스레드는 프로세스의 속성 중 일부를 가지므로 경량 프로세스라고도 합니다.

위의 간단한 예는 스레드의 작동 방식을 보여 주는 간단한 예제입니다. 스레드에서 전역 변수에 액세스하는 것은 일반적으로 좋지 않습니다. 스레드 2가 스레드 1보다 우선 순위가 있고 스레드 1이 변수를 변경해야 하는 경우 는 무엇입니까? 실제로 여러 스레드에서 전역 변수에 액세스해야 하는 경우 뮤텍스를 사용하여 액세스해야 합니다. void * func (무효 * param){ printf («내부 스레드 함수n»); char ** var = (char **)param; printf («통과 된 인수는 «%s»n», *var); int * i; i =(int *)malloc (4); *i=100; pthread_exit (공백*) 다음은 위에서 설명한 세 가지 함수를 모두 사용하려고 시도한 예제 코드입니다. 또한 명확성을 위해 올바르게 빌드하기 위해 주어진 예제에 대해 라이브러리 -lpthread에 대해 링크하도록 추가해야 합니다. 위에서 언급했듯이 전역 및 정적 변수가 있는 여러 스레드를 표시하는 C 프로그램은 모든 스레드가 데이터 세그먼트를 공유합니다. 전역 및 정적 변수는 데이터 세그먼트에 저장됩니다. 따라서 모든 스레드에서 공유 됩니다. 다음 예제 프로그램은 동일한 것을 보여 줍니다.

이 문서에서는 스레드를 만들고 식별하는 방법에 중점을 둡니다. 또한 기본 스레드 프로그래밍을 수행하는 방법을 설명하는 작업 C 프로그램 예제도 제공합니다. 리눅스 스레드 시리즈: 부품 1, 부품 2 (이 문서), 부품 3. 스레드 ID로 식별되는 각 스레드입니다. 스레드 ID는 프로세스 ID와 매우 다릅니다. 스레드 ID는 현재 프로세스에서 고유하지만 프로세스 ID는 시스템 전체에서 고유합니다. 스레드/프로세스는 한 번에 여러 코드 세그먼트를 실행할 수 있는 메커니즘이며 스레드가 동시에 실행되는 것처럼 보입니다. 커널은 비동기적으로 일정을 조정하여 각 스레드를 수시로 중단하여 다른 사용자가 실행할 수 있는 기회를 제공합니다. 스레드 ID는 `pthread_t` 유형으로 표시됩니다. 이미 설명했듯이 대부분의 경우 이 형식은 구조이므로 두 스레드 IS를 비교할 수 있는 함수가 있어야 합니다. 멀티스레딩이 왜 해야 합니까? 스레드는 병렬 처리를 통해 응용 프로그램을 개선하는 데 널리 사용됩니다.

예를 들어 브라우저에서 여러 탭은 서로 다른 스레드일 수 있습니다. MS 워드는 여러 스레드, 하나의 스레드를 사용하여 텍스트의 서식을 지정하고 다른 스레드를 사용하여 입력을 처리합니다. 스레드는 다음과 같은 이유로 인해 프로세스보다 빠르게 작동합니다: 1) 스레드 생성이 훨씬 빠릅니다. 2) 스레드 간의 컨텍스트 전환이 훨씬 빠릅니다. 3) 스레드는 쉽게 종료 할 수 있습니다 4) 스레드 간의 통신이 빠릅니다. 호기심에 대 한, 로렌스 리버 모어 국립 연구소는 더 많은 배경및 pthreads에서 사용할 수 있는 다양 한 기능을 사용할 수 있습니다 이유의 예제와 함께이 문서: computing.llnl.gov/tutorials/pthre… main() 시스템에서 스레드를 식별하는 데 사용되는 정수인 pthread_t 형식인 thread_id라는 변수를 선언합니다. thread_id를 선언한 후 pthread_create() 함수를 호출하여 스레드를 만듭니다.


admin