Linuxスレッドpthread_at tr_tスレッド属性(回転)

7962 ワード

ATTENTION:付加コードリンク:http://blog.sina.com.cn/s/blog_6 dc 9 e 4 cf 0100 xcvk.
  • スレッド属性:pthread_を使用する。at tr_tタイプは、構造体を初期化し、初期化してから使用し、使用後も除去初期化を行います。pthread_at tr_init:初期化pthread_at tr_destory:消去初期化
          #include 
          int pthread_attr_init(pthread_attr_t *attr);
          int pthread_attr_destroy(pthread_attr_t *attr);   
               0,     -1。
         
          pthread_attr_init  ,pthread_t                
                       。
         
            pthread_attr_init                 ,
          pthread_attr_destroy              ,     
          pthread_attr_destroy        pthread_attr_t   
          pthread_create    ,         。
         
                  :
    
          typedef struct
          {
                 int                           detachstate;            
                 int                          schedpolicy;         
                 struct sched_param      schedparam;          
                 int                          inheritsched;          
                 int                          scope;                
                 size_t                      guardsize;              
                 int                          stackaddr_set;
                 void *                     stackaddr;            
                 size_t                      stacksize;             
          }pthread_attr_t;
         
                    !!!
    
  • 分離状態:スレッドの分離状態は、スレッドがどのように自分自身を終了するかを決定する。
                 ,               ,       
       ,              。   pthread_join()            
       ,         ,             。   
     
                     ,       ,       ,
              。
     
             :           (pthread_join)       ,
                  ,              !  if  
                      ,       “  ”  ,   
              ,         ,    src    !   
        !
     
      #include 
      int pthread_attr_getdetachstate(const pthread_attr_t * attr, int * detachstate);
      int pthread_attr_setdetachstate(pthread_attr_t * attr, int detachstate);
        :attr:      
              detachstate:         
           0,     -1。
     
                  :
      <1>.detachstate   :PTHREAD_CREATE_DETACHED           
      <2>.detachstate   :PTHREAD_CREATE_JOINABLE          
    
  • スレッドの継承性:
        pthread_attr_setinheritsched pthread_attr_getinheritsched     
                !
     
      #include 
      int pthread_attr_getinheritsched(const pthread_attr_t *attr,int *inheritsched);
      int pthread_attr_setinheritsched(pthread_attr_t *attr,int inheritsched);
        :
      attr                      
      inheritsched           
           0,     -1。
     
         :
                                
      schedpolicy schedparam            。           
                             
                  ,                ,
            !
     
           :
      PTHREAD_INHERIT_SCHED:                 !
      PTHREAD_EXPLICIT_SCHED:              
                                          schedpolicy schedparam     
                                                 !
    
  • :スレッドスケジュールポリシーとスケジュールパラメータを以下に追加します。
                      pthread_attr_setschedpolicy pthread_attr_getschedpolicy   
                                 。
                   
                    int pthread_attr_getschedpolicy(const pthread_attr_t *, int * policy)
                    int pthread_attr_setschedpolicy(pthread_attr_*, int policy)
                      :
                            attr                  
                            policy               
                         0,     -1。
                   
                                  OS           :
                    SCHED_FIFO    :    
                    SCHED_RR       :   
                    SCHED_OTHER    :    
                   
                    SCHED_OTHER          , SCHED_FIFO SCHED_RR
                            ,     1 99,         .
                   
                      :
                            >    SCHED_FIFO           !
                            >               
                            > SCHED_RR        
                            >   SCHED_FIFO SCHED_RR            
                                           ,           
                             。 ,         SCHED_FIFO        
                              SCHED_FIFO             ,     
                                ,                。
                           
            <2>.    :
                   
                      pthread_attr_getschedparam  pthread_attr_setschedparam  
                                  。
                   
                       
    
                    int pthread_attr_getschedparam(const pthread_attr_t *,struct
                    sched_param *);
                    int pthread_attr_setschedparam(pthread_attr_t *,const struct
                    sched_param *);
                      :
                            attr                  
                            param        sched_parm    
                         0,     -1。
                   
                    /usr/include /bits/sched.h
                    struct sched_param
                    {
                           int sched_priority;    //!>           
                    };
                      :           !
                                        :
                    sched_get_priority_max sched_get_priority_min  !
                   
                    #include 
                    int sched_get_priority_max( int policy );
                    int sched_get_priority_min( int policy );
                      :max_:                
                            min_ :                
                   
                      :max_ = sched_get_priority_max( policy );
                            min_ = sched_get_priority_min( policy );
                                 policy    ,               
                               !
               
                      :  
                    http://www.yuanma.org/data/2006/0823/article_1392.htm
                    policy = SCHED_OTHER
                    max_priority = 0
                    min_priority = 0
    
                    Show SCHED_FIFO of priority
                    max_priority = 99
                    min_priority = 1
                   
                    Show SCHED_RR of priority
                    max_priority = 99
                    min_priority = 1
    
                    Show priority of current thread
                    priority = 0
    
  • スレッドの作用領域:
        pthread_attr_setscope pthread_attr_getscope  
                   。       
      #include    
      int    pthread_attr_getscope( const pthread_attr_t * attr, int * scope );
      int pthread_attr_setscope( pthread_attr_t*, int scope );
        :
              attr                     
              scope                      
           0,     -1。
     
                             ,     
      PTHREAD_SCOPE_PROCESS(       )
      PTHREAD_SCOPE_SYSTEM   (       )。
    
  • スレッドスタックのサイズ
        pthread_attr_setstackaddr pthread_attr_getstackaddr        
              。
     
      int pthread_attr_getstacksize(const pthread_attr_t *,size_t * stacksize);
      int pthread_attr_setstacksize(pthread_attr_t *attr ,size_t *stacksize);
        :attr                      
              stacksize            
           0,     -1。           
    
  • スレッドスタックのアドレス
      #include 
      int pthread_attr_getstackaddr(const pthread_attr_t *attr,void **stackaddf);
      int pthread_attr_setstackaddr(pthread_attr_t *attr,void *stackaddr);
        :attr                     
              stackaddr                    
           0,     -1。
     
        :pthread_attr_getstackaddr    ,      :pthread_attr_getstack
    
  • 警戒バッファ
        pthread_attr_getguardsize pthread_attr_setguardsize        
                    。
    
      #include                    
      int pthread_attr_getguardsize(const pthread_attr_t *restrict attr,size_t *restrict
      guardsize);
      int pthread_attr_setguardsize(pthread_attr_t *attr ,size_t *guardsize);
           0,     -1。
     
          :
                      guardsize                     
                    。         PAGESIZE   。   guardsize 
                       0,                :     
                            。   ,       stackaddr  
                    ,              ,           
                   ,    guardsize      0。