Automotive Software

포직스 쓰레드 속성 객체 (Attributes Objects) 2 - pthread_mutexattr_t, pthread_condattr_t 본문

포직스 (POSIX)/쓰레드 프로그래밍 고급 (Advanced Threaded Program)

포직스 쓰레드 속성 객체 (Attributes Objects) 2 - pthread_mutexattr_t, pthread_condattr_t

AutoSW 2020. 10. 5. 22:04
  1. 속성 객체
  2. 쓰레드 속성
  3. 뮤텍스 속성
    • 포직스에서는 기본적으로 아래의 멤버를 속성으로 정의하고 있지만, 의무적으로 구현해야 하는 속성이 아니므로 사용하는 운영체제에 따라 속성 지원 여부가 상이할 수 있다.
      • pshared(process-shared) : 뮤텍스의 접근 영역 지정
        • PTHREAD_PROCESS_SHARED : 뮤텍스가 할당된 메모리 공간에 접근할 수 있는 모든 스레드(다른 프로세스에서 생성된)들의 뮤텍스 사용을 허가함
        • PTHREAD_PROCESS_PRIVATE : 뮤텍스를 초기화한 동일 프로세스 내에서 생성된 스레드들에게만 뮤텍스 사용을 허가함
      • protocol : 스케줄링 프로토콜 지정
        • PTHREAD_PRIO_INHERIT : 하나의 쓰레드가 뮤텍스 락을 통해 다른 놓은 우선순위를 쓰레드를 블록킹하고 있을 때, 그 쓰레드의 우선순위를 이 뮤텍스(PTHREAD_PRO_INHERIT)를 기다리고 있는 쓰레드 중에서 가장 높은 우선순위의 값으로 물려받도록 함
        • PTHREAD_PRIO_PROTECT : 쓰레드를 뮤텍스들에게 할당된 가장 높은 우선순위를 부여하여 실행함
        • PTHREAD_PRIO_NONE : 뮤텍스를 통한 쓰레드의 우선순위나 스케줄링에 영향을 주지 않음
      • prioceiling : 우선순위 상한값을 지정
    • 포직스 호환 운영체제에 따라 이러한 멤버를 포함하는 구조체의 형태나 멤버변수 명은 상이할 수 있다.
  4. 조건변수 속성
    • 조건변수 속성으로는 오직 하나, pshared만 정의하고 있다.
#include <pthread.h>

/* API examples */
int pthread_mutexattr_setpshared( pthread_mutexattr_t* attr, int pshared );
int pthread_mutexattr_setprotocol( pthread_mutexattr_t * attr, int protocol );
int pthread_mutexattr_setprioceiling( pthread_mutexattr_t* attr, int prioceiling );
int pthread_condattr_setpshared( pthread_condattr_t* attr, int pshared );

/* exemplary API calls */
pthread_mutext_t mutex;
pthread_mutexattr_t mutexAttr;
int retVal;

retVal = pthread_mutexattr_init( &mutexAttr ); /* must be called first to init. the object */
if( retVal == 0 )
{
	retVal = pthread_mutexattr_setpshared( &mutexAttr, PTHREAD_PROCESS_PRIVATE );
    if( retVal == 0 )
    {
    	retVal = pthread_mutex_init( &mutex, &mutexAttr );
    }
    else
    {
    	/* do something for error handling */
    }
}
else
{
	/* do something for error handling */
}
 

포직스 쓰레드 속성 객체 (Attributes Objects) 1 - pthread_attr_t

포직스 쓰레드 속성 객체 (Attributes Objects) 1 - pthread_attr_t 쓰레드 프로그래밍에서 쓰레드, 뮤텍스 또는 조건 변수를 사용할 때, 쉽게는 아래와 같이 속성 값을 나타내는 두 번째 인자에 NULL값을 전�

autosw.tistory.com