posix 다중 루틴 유감 - 루틴 고급 프로그래밍 (루틴 속성 함수 총결산)
pthread_attr_t
  
  
  
  등록 정보
값
결실
scope
PTHREAD_SCOPE_PROCESS
새로운 라인은 프로세스 중의 다른 라인과 경쟁을 일으킨다.
detachstate
PTHREAD_CREATE_JOINABLE
스레드가 종료되면 완료 상태와 스레드 ID가 유지됩니다.
stackaddr
NULL
새 스레드는 시스템이 분배한 창고 주소를 가지고 있습니다.
stacksize
1M
새 스레드는 시스템이 정의한 창고 크기를 가지고 있습니다.
priority
0
새 라인의 우선 순위는 0입니다.
inheritsched
PTHREAD_EXPLICIT_SCHED
새 스레드는 부모 스레드 스케줄링 우선순위를 계승하지 않습니다.
schedpolicy
SCHED_OTHER
새 스레드는 Solaris를 사용하여 정의된 고정 우선 순위를 동기화 객체에 경합합니다.스레드가 점령되거나 스레드가 막히거나 정지될 때까지 계속 운행될 것입니다.
guardsize
PAGESIZE(4M)
새 스레드는 시스템이 정의한 창고 넘침 보호구역 크기를 가지고 있습니다
1、            
int pthread_attr_init(pthread_attr_t *attr);
     :      0,         
    : attr                  
    :Posix        pthread_attr_t    scope  、detach  、    、    、   。
        pthread_attr_init                 。
2、          
int pthread_attr_destroy(pthread_attr_t *attr);
     :      0,         
    :attr                  
    : pthread_attr_destroy        pthread_attr_t   pthread_create    ,         。
3、      CPU   
int pthread_attr_getaffinity_np(pthread_attr_t *attr, size_t cpusetsize, cpu_set_t *cpuset);
     :      0,         
    :attr                  
    :     CPU    
4、     CPU   
int pthread_attr_setaffinity_np(pthread_attr_t *attr, size_t cpusetsize, const cpu_set_t *cpuset);
     :      0,         
    :attr                    
       cpusetsize     CPU       
       cpuset         CPU    
    :    cupset      CPU   
5、          
int pthread_attr_getdetachstate(pthread_attr_t *attr, int *detachstate);
     :      0,         
    : attr                     
        detachstate              
    :          
6、          
int pthread_attr_setdetachstate(pthread_attr_t *attr, int detachstate);
     :      0,         
    :attr                   
       detachstat       
       PTHREAD_CREATE_DETACHED(  )
      PTHREAD_CREATE_JOINABLE(   )
    :   Pthreads     detachstate  ,        PTHREAD_CREATE_DETACHED(  ) PTHREAD_CREATE_JOINABLE(   )。   ,         ,     pthread_create      ID                 ,    。
7、             
  int pthread_attr_getguardsize(pthread_attr_t *attr, size_t *guardsize);
     :      0,         
    : attr                  
        guardsize             
    :           。         ,         guardsize   :
  
  
  
  
4 오버플로우 보호는 시스템 자원의 낭비를 초래할 수 있다.만약 프로그램이 대량의 루트를 만들고, 이 루트가 창고에 영원히 넘치지 않을 것을 알았다면, 넘침 보호 구역을 닫을 수 있습니다.오버플로우 보호 영역을 닫으면 시스템 자원을 절약할 수 있습니다 4 스레드가 창고에 대형 데이터 구조를 분배할 때 비교적 큰 넘침 보호 구역이 창고의 넘침을 측정해야 할 수도 있다       guardsize               。                ,                。              ,           。              ,          SIGSEGV          。
  8、             
int pthread_attr_setguardsize(pthread_attr_t *attr, size_t guardsize);
     :      0,         
    :attr                  
       guardsize           
    :              。   guardsize   ,       attr             。   guardsize    ,       attr              guardsize         。     ,                。  guardsize                 PAGESIZE    。    sys/mman.h   PAGESIZE。
  9、        
int pthread_attr_getscope(pthread_attr_t *attr, int *scope);
     :      0,         
    :attr                  
       scope              
    :                   
10、        
int pthread_attr_setscope(pthread_attr_t *attr, int scope);
     :      0,         
    :attr                  
       guardsize        ,      
       PTHREAD_SCOPE_SYSTEM                 
       PTHREAD_SCOPE_PROCESS                
    :                   
11、         (       )
int pthread_attr_getstack(pthread_attr_t *attr, void **stackaddr, size_t *stacksize);
     :      0,         
    :attr                  
       stackaddr          
       stacksize          
    :            
12、         (       )
int pthread_attr_setstack(pthread_attr_t *attr, void *stackaddr, size_t stacksize);
     :      0,         
    :attr                  
       stackaddr         (    ):       ,         posix_memalign     。    stackaddr       ,       NULL,            ,      stacksize。
       stacksize         :          
    :     ,   pthread_attr_setguardsize  。
13、        
int pthread_attr_getstackaddr(pthread_attr_t *attr, void **stackaddr);
     :      0,         
    :attr                  
       stackaddr          
    :     ,   pthread_attr_getstack   
14、        
int pthread_attr_setstackaddr(pthread_attr_t *attr, void *stackaddr);
     :      0,         
    :attr                  
       stackaddr          
    :     ,   pthread_attr_setstack   。
  15、        
int pthread_attr_getstacksize(pthread_attr_t *attr, size_t *stacksize);
     :      0,         
    :attr                  
       stacksize            
    :        。            。Pthreads  PTHREAD_STACK_MIN  ,              ,  #include <limits.h>           。  :#ulimit -s  #ulimit -a  stack size       。#ulimit -s value      stack  。   8M,  16384  。
    :  ,           。                    。                   。            SIGSEGV          。              ,      。    ,    PTHREAD_CREATE_JOINABLE     。      pthread_join      ,      。        ,         。     ,           。             1 MB(   32    )  2 MB(   64    )     ,          。      mmap()   MAP_NORESERVE        。            /    。                   。
  16、        
int pthread_attr_setstacksize(pthread_attr_t *attr, size_t stacksize);
     :      0,         
    :attr                  
       stacksize         (      ):          。(      )。stacksize              。stacksize             。   stacksize  ,       。       ,     。
    :        。
17、         
  int pthread_attr_getschedpolicy(pthread_attr_t *attr, int *policy);
     :      0,         
    : attr                  
        policy              
    :         
18、         
int pthread_attr_setschedpolicy(pthread_attr_t *attr, int policy);
     :      0,         
    :attr                  
       policy            ,     :
       SCHED_FIFO          
       SCHED_RR          ,    FIFO,          
       SCHED_OTHER         。          , SCHED_FIFO SCHED_RR        ,     1 99,         .
  :   SCHED_FIFO           ,              。SCHED_RR        。  SCHED_FIFO SCHED_RR                           ,            。 ,         SCHED_FIFO          SCHED_FIFO             ,         ,                。
    :         
19、         
  int pthread_attr_setschedparam(pthread_attr_t *attr, const struct sched_param *param);
     :      0,         
    :attr                  
       param               ,          ,  
       struct sched_param 
     {
        int sched_priority; /* Scheduling priority */
     };
    :         
20、         
int pthread_attr_getschedparam(pthread_attr_t *attr, struct sched_param *param);
     :      0,         
    :attr                  
       param              
    :         
21、            
int pthread_attr_getinheritsched(pthread_attr_t *attr, int *inheritsched);
     :      0,         
    :attr                  
       guardsize              
       PTHREAD_INHERIT_SCHED:              ,attr        
       PTHREAD_EXPLICIT_SCHED          attr       
    :            
    :                  ,      inheritsched  (        :PTHREAD_EXPLICIT_SCHED)。
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.