posix 다중 루틴 유감 - 루틴 고급 프로그래밍 (루틴 속성 함수 총결산)

10881 단어
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)。

    좋은 웹페이지 즐겨찾기