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。