pthread의 속성 대상


1. 개요


속성 대상은 대상을 초기화하기 위해 추가 파라미터를 제공하는 용기입니다.간단하게 속성 대상을 하나의 구조체로 상상할 수 있지만, 이 구조체의 변수의 읽기와 쓰기는 구성원 접근 문자로 구성원 변수를 직접 조작하지 않고 제공하는 함수를 통해 이루어져야 한다.속성 대상은 구체적으로 구조체의 창고 변수를 실현한 다음에 접근 함수를 각종 매크로로 포장할 수 있다.무더기 변수로 진정한 함수를 사용하여 접근할 수 있고 유효성 검사 등 다른 기능도 할 수 있다.
POSIX의 속성 객체는 pthread 입니다.t 대응하는 속성 대상 pthreadattr_t,pthread_mutex_t 대응하는 속성 대상 pthreadmutexattr_t,pthread_cond_t 대응하는 속성 대상 pthreadcondattr_이 세 가지 유형.
POSIX는 속성 대상의 디자인에 다음과 같은 장점이 있다. (1) 초보 사용자에게 NULL만 전송하면 된다. 전문가급 사용자는 다른 확장 파라미터를 사용할 수 있지만 사용하는 인터페이스는 똑같다.(2) 속성 대상이 새로운 속성을 확장한 후 기존 코드에 영향을 주지 않는다.(3)'표준적인 형식으로 비표준적인 내용을 지원한다'. 각 공장은 자신의 하드웨어 특성에 따라 속성 대상을 확장할 수 있고 POSIX 표준에서 인터페이스에 대한 정의에 영향을 주지 않는다.

2. 상호 배척량의 속성


2.1 유형 및 인터페이스


    
   
   
   
   
  1. pthread_mutexattr_t attr; 
  2.  
  3.     int pthread_mutexattr_init(pthread_mutexattr_t * attr); 
  4.  
  5.     int pthread_mutexattr_destroy(pthread_mutexattr_t *attr); 
  6.  
  7.     #ifdef _POSIX_THREAD_PROCESS_SHREAD 
  8.  
  9.     int pthread_mutexattr_getpshared(pthread_mutexattr_t *attr,int *pshared); 
  10.  
  11.     int pthread_mutexattr_setpshared(pthread_mutexattr_t *attr,int pshared); 
  12.  
  13.     #endif 

2.2 pshared 속성


pshared 속성에는 두 가지 상수 값이 있습니다. PTHREADPROCESS_SHARED 및 PTHREADPROCESS_PRIVATE.동일한 배율에 액세스할 수 있지만 여러 프로세스에 분산된 스레드를 동기화해야 하는 경우 PTHREADPROCESS_SHARED.이러한 프로세스가 현재 프로세스에 분산되어 있는 경우 PTHREAD 값을 설정합니다.PROCESS_PRIVATE, 이 값도 기본값입니다.

3. 신호량의 속성


3.1 유형 및 인터페이스


    
   
   
   
   
  1. pthread_condattr_t attr; 
  2.  
  3.     int pthread_condattr_init(pthread_condattr_t * attr); 
  4.  
  5.     int pthread_condattr_destroy(pthread_condattr_t *attr); 
  6.  
  7.     #ifdef _POSIX_THREAD_PROCESS_SHARED 
  8.  
  9.     int pthread_condattr_getpshared(pthead_condattr_t *attr,int * pshared); 
  10.  
  11.     int pthread_condattr_setpshared(pthread_condatr_t *attr,int pshared); 
  12.  
  13.     #endif 

3.2 pshared 속성


조건 변수의 pshared 속성의 의미는 상호 배척량의 pshared 속성의 의미와 같다.주의해야 할 것은 공유된cond를 사용할 때 그와 협조하는mutex도 공유해야 한다는 것이다.

4스레드 속성


4.1 유형 및 인터페이스


 
   
   
   
   
  1. pthread_attr_t attr; 
  2.  
  3. pthread_attr_init(pthread_attr_t *attr); 
  4.  
  5. pthread_attr_destroy(pthread_attr_t *attr); 
  6.  
  7. pthread_attr_getdetachstate(pthread_attr_t *attr,int *detachstate); 
  8.  
  9. pthread_attr_setdetachstate(pthread_attr_t *attr,int detachstate); 
  10.  
  11. #ifdef _POSIX_THREAD_STACKSIZE 
  12.  
  13. pthread_attr_getstacksize(pthread_attr_t *attr,size_t *stacksize); 
  14.  
  15. pthread_attr_setstacksize(pthread_attr_t *attr,size_t stacksize); 
  16.  
  17. #endif 
  18.  
  19. #ifdef _POSIX_THREAD_STACKADDR 
  20.  
  21. pthread_attr_getstackaddr(pthread_attr_t *attr,void * stackaddr); 
  22.  
  23. pthread_attr_setstackaddr(pthread_attr_t *attr,void * * stackaddr); 
  24.  
  25. #endif 

4.2 스레드의 속성


POSIX에서 규정한 라인의 속성은detachstate,stacksize,stackaddr,scope,inheritsched,schedpolicy,schedparam이다.
모든 스레드 시스템은detachstate 속성을 지원합니다.detachstate에는 두 개의 상수 값이 있습니다. PTHREADCREATE_JOINABLE 및 PTHREADCREATE_DETACHED.여기서 PTHREADCREATE_JOINABLE은 기본 옵션입니다.를 사용하여 PTHREAD를 설정한 경우CREATE_DETACHED의 스레드 속성이 스레드를 만들었습니다. 스레드 표시는 후속 코드에서 계속 사용할 수 없습니다.
Stacksize의 호환성이 좋지 않습니다. 이것은 서로 다른 라인 시스템에서 Stack의 값 크기에 대한 정의가 같지 않기 때문입니다.POSIX는 상수 PTHREAD 를 지정합니다.ATTR_MIN은 스레드 스택의 최소 공간을 확인합니다.스레드 스택 크기를 설정할 때는 PTHREADATTR_MIN 및 스레드의 기본 크기를 기준으로 합니다.
stackaddr의 목적은 사용자가 메모리의 한 구역을 스레드 창고로 설정할 수 있도록 하는 것입니다. 이 메모리 구역의 최소 크기는 PTHREAD 입니다.STACK_MIN.또한 하나의 창고는 하나의 라인에만 사용할 수 있다는 것을 주의해야 한다.네가 정확한 결과를 얻고 싶지 않으면
Stackaddr 이 속성의 호환성은 Stacksize의 호환성보다 더 나쁘다.Stackaddr를 설정할 때, 기계 창고가 데이터를 압입한 후, 창고 바늘이 이동하는 방향이 낮은 주소에서 높은 주소로 이동하는지, 높은 주소에서 땅으로 이동하는지 알아야 한다.또한 창고 지침이 데이터를 압입하기 전에 증가하는지 압입한 후에 증가하는지 명확히 해야 한다.이 요소들은 두 번째 매개 변수 Stackaddr의 구체적인 값에 영향을 줄 것이다.
한 마디로 하면 가능한 한 창고 주소를 설정하지 않는 것이 좋다.

좋은 웹페이지 즐겨찾기