재미있는 수학

Menu

c 스레드 예제

또한 명확성을 위해 올바르게 빌드하기 위해 주어진 예제에 대해 라이브러리 -lpthread에 대해 링크하도록 추가해야 합니다. 스레드 ID는 `pthread_t` 유형으로 표시됩니다. 이미 설명했듯이 대부분의 경우 이 형식은 구조이므로 두 스레드 IS를 비교할 수 있는 함수가 있어야 합니다. 스레드/프로세스는 한 번에 여러 코드 세그먼트를 실행할 수 있는 메커니즘이며 스레드가 동시에 실행되는 것처럼 보입니다. 커널은 비동기적으로 일정을 조정하여 각 스레드를 수시로 중단하여 다른 사용자가 실행할 수 있는 기회를 제공합니다. 스레드란 무엇입니까? 스레드는 프로세스 내의 단일 시퀀스 스트림입니다. 스레드는 프로세스의 속성 중 일부를 가지므로 경량 프로세스라고도 합니다. 스레드 ID로 식별되는 각 스레드입니다. 스레드 ID는 프로세스 ID와 매우 다릅니다. 스레드 ID는 현재 프로세스에서 고유하지만 프로세스 ID는 시스템 전체에서 고유합니다. main() 시스템에서 스레드를 식별하는 데 사용되는 정수인 pthread_t 형식인 thread_id라는 변수를 선언합니다. thread_id를 선언한 후 pthread_create() 함수를 호출하여 스레드를 만듭니다.

pthread_create()는 4개의 인수를 사용합니다. 첫 번째 인수는 이 함수에 의해 설정된 thread_id에 대한 포인터입니다. 두 번째 인수는 특성을 지정합니다. 값이 NULL이면 기본 특성이 사용됩니다. 세 번째 인수는 스레드를 만들 수 있도록 실행할 함수의 이름입니다. 네 번째 인수는 함수 myThreadFun에 인수를 전달하는 데 사용됩니다. 스레드에 대한 pthread_join() 함수는 프로세스에 대한 wait() 함수와 동일합니다. pthread_join에 대한 호출은 첫 번째 인수와 동일한 식별자를 가진 스레드가 종료될 때까지 호출 스레드를 차단합니다. 호기심에 대 한, 로렌스 리버 모어 국립 연구소는 더 많은 배경및 pthreads에서 사용할 수 있는 다양 한 기능을 사용할 수 있습니다 이유의 예제와 함께이 문서: computing.llnl.gov/tutorials/pthre…

다음은 위에서 설명한 세 가지 함수를 모두 사용하려고 시도한 예제 코드입니다. 위의 간단한 예는 스레드의 작동 방식을 보여 주는 간단한 예제입니다. 스레드에서 전역 변수에 액세스하는 것은 일반적으로 좋지 않습니다. 스레드 2가 스레드 1보다 우선 순위가 있고 스레드 1이 변수를 변경해야 하는 경우 는 무엇입니까? 실제로 여러 스레드에서 전역 변수에 액세스해야 하는 경우 뮤텍스를 사용하여 액세스해야 합니다. 리눅스 스레드 시리즈의 파트 I에서, 우리는 리눅스에서 스레드와 관련된 다양한 측면을 논의했다. 멀티스레딩이 왜 해야 합니까? 스레드는 병렬 처리를 통해 응용 프로그램을 개선하는 데 널리 사용됩니다. 예를 들어 브라우저에서 여러 탭은 서로 다른 스레드일 수 있습니다. MS 워드는 여러 스레드, 하나의 스레드를 사용하여 텍스트의 서식을 지정하고 다른 스레드를 사용하여 입력을 처리합니다. 스레드는 다음과 같은 이유로 인해 프로세스보다 빠르게 작동합니다: 1) 스레드 생성이 훨씬 빠릅니다.

2) 스레드 간의 컨텍스트 전환이 훨씬 빠릅니다. 3) 스레드는 쉽게 종료 할 수 있습니다 4) 스레드 간의 통신이 빠릅니다. 프로세스와 스레드의 차이점은 무엇입니까? 스레드는 다른 스레드가 코드 섹션, 데이터 섹션 및 열린 파일 및 신호와 같은 OS 리소스와 공유하기 때문에 다른 프로세스와 독립적이지 않습니다. 그러나 프로세스와 마찬가지로 스레드에는 자체 프로그램 카운터(PC), 레지스터 집합 및 스택 공간이 있습니다. void * func (무효 * param){ printf (“내부 스레드 함수n”); char ** var = (char **)param; printf (“통과 된 인수는 “%s”n”, *var); int * i; i =(int *)malloc (4); *i=100; pthread_exit (공백*) 이 문서에서는 스레드를 만들고 식별하는 방법에 중점을 둡니다.

No categories

Comments

Sorry, comments are closed for this item.