c++ pthread 예제

c++ pthread 예제

아래 코드는 뮤텍스와 액세스를 동기화하는 또 다른 예를 보여줍니다. 액세스를 제어하기 위해 코드 섹션을 입력하기 전에 뮤텍스를 잠근 다음 완료되면 잠금을 해제합니다. 세마포는 개체가 0개인지 0보다 많은지 여부에 관계없이 개체를 작업하는 데 유용합니다. 채우기 및 비어 있는 버퍼 및 목록은 좋은 예입니다. 호출이 성공하면 두 개의 스레드가 실행됩니다. 원래 스레드(main)가 계속되어 pthread_create()이 지나면 코드를 실행하고 새 스레드가 thread_fnc()에서 실행하기 시작합니다. pthread_spin_lock()에 대한 호출은 잠금이 획득될 때까지 회전하고 pthread_spin_unlock()에 대한 호출은 잠금을 해제합니다. 호출 pthread_spin_destroy()는 잠금에 사용되는 모든 리소스를 해제합니다. 아래 예제는 pthread_join()를 사용하여 완료될 때까지 기다리는 것입니다.

새로 만든 스레드는 원래 스레드와 전역 변수를 공유합니다. 변수를 수정합니다. 그러나 관리해야 할 항목이 여러 개인 경우에 더 일반적으로 사용됩니다. 세마포는 스레드 또는 프로세스 간에 신호를 하는 데에도 사용할 수 있습니다. 예를 들어 다른 스레드에 큐에 데이터가 있음을 알릴 수 있습니다. 세마포에는 명명된 세마포와 이름 없는 세마포의 두 가지 유형이 있습니다. pthread_join() 서브루틴은 지정된 `threadid` 스레드가 종료될 때까지 호출 스레드를 차단합니다. 스레드를 만들 때 해당 특성 중 하나는 조인 또는 분리 여부를 정의합니다. 조인 가능한 것으로 생성된 스레드만 조인할 수 있습니다. 스레드가 분리된 것으로 작성된 경우 조인할 수 없습니다.

for 루프에서는 pthread_create() 함수를 5번 호출하여 5개의 다른 스레드를 만듭니다. pthread_create()는 스레드 생성 요청의 결과를 지정하기 위해 오류 코드를 반환하는 네 가지 매개 변수를 사용합니다. 스레드가 성공적으로 생성되면 0을 반환합니다. 여기서 스레드 생성에 실패하면 오류 코드를 반환하여 오류를 지정합니다. strerror())를 사용하여 오류 세부 정보를 얻을 수 있습니다. 모든 함수는 이전에 선언된 개체에 대한 포인터를 취합니다(이 경우 pthread_mutex_t). 추가 특성 매개 변수 pthread_mutex_init을 사용하면 해당 동작을 제어하는 뮤텍스에 대한 특성을 제공할 수 있습니다. 기본 함수에서 p_threads 배열을 선언하는 것으로 시작합니다. pthread_t 형식은 실제로 스레드의 식별자로 사용되는 int입니다. 이 루틴은 스레드를 죽입니다.

pthread_exit() 함수는 반환되지 않습니다.

0

You may also like