관리 메뉴
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- 속성 객체
- 쓰레드 속성
- 예전 포스트에 이어 뮤텍스와 조건변수 속성을 알아보자.
- 뮤텍스 속성
- 포직스에서는 기본적으로 아래의 멤버를 속성으로 정의하고 있지만, 의무적으로 구현해야 하는 속성이 아니므로 사용하는 운영체제에 따라 속성 지원 여부가 상이할 수 있다.
- pshared(process-shared) : 뮤텍스의 접근 영역 지정
- PTHREAD_PROCESS_SHARED : 뮤텍스가 할당된 메모리 공간에 접근할 수 있는 모든 스레드(다른 프로세스에서 생성된)들의 뮤텍스 사용을 허가함
- PTHREAD_PROCESS_PRIVATE : 뮤텍스를 초기화한 동일 프로세스 내에서 생성된 스레드들에게만 뮤텍스 사용을 허가함
- protocol : 스케줄링 프로토콜 지정
- PTHREAD_PRIO_INHERIT : 하나의 쓰레드가 뮤텍스 락을 통해 다른 놓은 우선순위를 쓰레드를 블록킹하고 있을 때, 그 쓰레드의 우선순위를 이 뮤텍스(PTHREAD_PRO_INHERIT)를 기다리고 있는 쓰레드 중에서 가장 높은 우선순위의 값으로 물려받도록 함
- PTHREAD_PRIO_PROTECT : 쓰레드를 뮤텍스들에게 할당된 가장 높은 우선순위를 부여하여 실행함
- PTHREAD_PRIO_NONE : 뮤텍스를 통한 쓰레드의 우선순위나 스케줄링에 영향을 주지 않음
- prioceiling : 우선순위 상한값을 지정
- pshared(process-shared) : 뮤텍스의 접근 영역 지정
- 포직스 호환 운영체제에 따라 이러한 멤버를 포함하는 구조체의 형태나 멤버변수 명은 상이할 수 있다.
- 포직스에서는 기본적으로 아래의 멤버를 속성으로 정의하고 있지만, 의무적으로 구현해야 하는 속성이 아니므로 사용하는 운영체제에 따라 속성 지원 여부가 상이할 수 있다.
- 조건변수 속성
- 조건변수 속성으로는 오직 하나, 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 */
}
'포직스 (POSIX) > 쓰레드 프로그래밍 고급 (Advanced Threaded Program)' 카테고리의 다른 글
쓰레드 스케줄링 (Thread Scheduling) (0) | 2020.10.25 |
---|---|
쓰레드 취소 및 뒷정리 (Thread Cancellation and Cleaning up) (0) | 2020.10.19 |
포직스 쓰레드 속성 객체 (Attributes Objects) 1 - pthread_attr_t (0) | 2020.09.24 |
쓰레드 공유 변수 초기화 한번만 하기 (One-time initialization in Threaded Programming) (0) | 2020.09.22 |